From cf2c07899c0fa136569e01bab9eea37348ad9467 Mon Sep 17 00:00:00 2001 From: Tilo K Date: Sun, 15 Feb 2026 20:54:41 +0100 Subject: [PATCH] chore: add readme --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..5800c62 --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# go-http-server + +A minimal TCP-based HTTP server in Go for learning and experimentation. It demonstrates manual request-line and header parsing and simple connection handling. + +Requires +- Go 1.26 or newer. + +Quick start +1. Build + - cd into the project root (the directory that contains `go-http-server`) and run: + ``` + cd go-http-server + go build -o go-http-server + ``` +2. Run + - Start the server: + ``` + ./go-http-server + ``` + - Or during development: + ``` + go run . + ``` + +Testing +- Run unit tests: + ``` + cd go-http-server + go test ./... + ``` + +What’s in the repo +- `main.go` — listener and connection lifecycle. +- `readheaders.go` — `readHeaders` and `parseRequestLine` logic; returns a `Headers` struct. +- `response_helper` — helpers for writing responses. +- `config` — runtime configuration (listen address, profiling toggle). + +Notes +- The parser expects a request-line with exactly three tokens: `METHOD URI PROTO`. +- Header lines without a colon are ignored; values are trimmed. +- The server supports simple keep-alive behavior when the `Connection: keep-alive` header is present. + +Contributing +- Open issues or PRs. Add tests for parsing or new behavior and run `go test ./...` before submitting. + +License +- MIT