Hello, For HTTP request body, if neither "Content-Encoding: chunked" nor "Content-Length" is specified, it should mean body length is 0.
In RFC 9112 Section 6.3, 7.: | 7. If this is a request message and none of the above are true, then | the message body length is zero (no message body is present). The behavior can be tested by requesting POST to a cgi, like this: $ curl -X POST http://127.0.0.1/cgi-bin/test (Ctrl-C is needed without the diff) ok? # first round https://marc.info/?l=openbsd-tech&m=158173705129829&w=2 Index: usr.sbin/httpd/server_http.c =================================================================== RCS file: /cvs/src/usr.sbin/httpd/server_http.c,v retrieving revision 1.151 diff -u -p -r1.151 server_http.c --- usr.sbin/httpd/server_http.c 15 Aug 2022 09:36:19 -0000 1.151 +++ usr.sbin/httpd/server_http.c 1 Sep 2022 20:36:10 -0000 @@ -474,12 +474,9 @@ server_read_http(struct bufferevent *bev /* HTTP request payload */ if (clt->clt_toread > 0) bev->readcb = server_read_httpcontent; - - /* Single-pass HTTP body */ - if (clt->clt_toread < 0) { - clt->clt_toread = TOREAD_UNLIMITED; - bev->readcb = server_read; - } + if (clt->clt_toread < 0 && !desc->http_chunked) + /* 7. of RFC 9112 Section 6.3 */ + clt->clt_toread = 0; break; default: server_abort_http(clt, 405, "method not allowed");