From d057960769f284e2e4ee9b38d3c99f28f656c71d Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 6 Apr 2022 15:29:34 +0200 Subject: [PATCH] BUG/MINOR: fcgi-app: Don't add C-L header on response to HEAD requests In the FCGI app, when a full response is received, if there is no content-length and transfer-encoding headers, a content-length header is automatically added. This avoid, as far as possible to chunk the response. This trick was added because, most of time, scripts don"t add those headers. But this should not be performed for response to HEAD requests. Indeed, in this case, there is no payload. If the payload size is not specified, we must not added it by hand. Otherwise, a "content-length: 0" will always be added while it is not the real payload size (unknown at this stage). This patch should solve issue #1639. It must be backported as far as 2.2. --- src/fcgi-app.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fcgi-app.c b/src/fcgi-app.c index 8d180274a..63e0bd2dd 100644 --- a/src/fcgi-app.c +++ b/src/fcgi-app.c @@ -349,7 +349,7 @@ static int fcgi_flt_http_headers(struct stream *s, struct filter *filter, struct /* Add the header "Content-Length:" if possible */ sl = http_get_stline(htx); - if (sl && + if (s->txn->meth != HTTP_METH_HEAD && sl && (sl->flags & (HTX_SL_F_XFER_LEN|HTX_SL_F_CLEN|HTX_SL_F_CHNK)) == HTX_SL_F_XFER_LEN && (htx->flags & HTX_FL_EOM)) { struct htx_blk * blk;