My previous statement was not entirely correct as the Content-Length header is not set for ALL traffic, but just in case Content-Length is not set already. However, I'd still suggest to move the fix to where it belongs (in my opinion).
On 2021-05-20 06:43, Matthias Pressfreund wrote: > Fix works for me, too. Thanks. > > It now sets the "Content-Length: 0" header for ALL traffic that > is not chunk-encoded. But chunk-encoding may be disabled already > (e.g. for http/1.0). I'd therefore suggest to move the fix to where > the handling of zero-length bodies actually takes place. > > > --- usr.sbin/httpd/server_fcgi.c Thu May 20 05:57:23 2021 > +++ usr.sbin/httpd/server_fcgi.c Thu May 20 06:03:40 2021 > @@ -620,6 +620,12 @@ > EVBUFFER_LENGTH(clt->clt_srvevb) == 0) { > /* Can't chunk encode an empty body. */ > clt->clt_fcgi.chunked = 0; > + key.kv_key = "Content-Length"; > + if ((kv = kv_find(&resp->http_headers, &key)) == NULL) { > + if (kv_add(&resp->http_headers, > + "Content-Length", "0") == NULL) > + return (-1); > + } > } > > /* Set chunked encoding */ > @@ -636,13 +642,6 @@ > if (kv_add(&resp->http_headers, > "Transfer-Encoding", "chunked") == NULL) > return (-1); > - } else { > - key.kv_key = "Content-Length"; > - if ((kv = kv_find(&resp->http_headers, &key)) == NULL) { > - if (kv_add(&resp->http_headers, > - "Content-Length", "0") == NULL) > - return (-1); > - } > } > > /* Is it a persistent connection? */ > >