diff --git a/ROADMAP.md b/ROADMAP.md index fc6db4b..2ec174f 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -227,6 +227,24 @@ PubSub underneath. --- +## Known bugs + +- **HTTP/1.0 keep-alive: server honors but never advertises** (found + 2026-06-12 via `ab -k`). A 1.0 request with `Connection: Keep-Alive` + IS kept alive (second pipelined request on the same socket gets + answered), but the response carries no `Connection: Keep-Alive` + header. Per 1.0 convention the client may only reuse when the server + explicitly opts in; absent the header, clients assume the server will + close and wait for EOF โ€” which never comes. `ab -k` therefore + deadlocks until its poll timeout (`apr_pollset_poll: timeout 70007`) + on the FIRST response; no keep-alive bench numbers obtainable. + Fix direction: when the conn stays alive on a 1.0 exchange, echo + `Connection: Keep-Alive` in serialise_response โ€” or don't keep 1.0 + alive at all. Decide scope (error responses, HEAD) with user first. + Baseline for reference: GET /users (crud example, release, loopback, + stdout logging silenced), no keep-alive, c=50: ~18.9k req/s, 0 + failed, p50 3ms / p99 5ms. HTTP/1.1 path responds normally. + ## Later / icebox - **HTTP/2** โ€” spec ยง2.2 already designs the stream-actor demux (zero-copy