From: Mickael Torres Date: Wed, 16 Nov 2022 13:29:37 +0000 (+0100) Subject: BUG/MINOR: mux-h1: Do not send a last null chunk on body-less answers X-Git-Tag: v2.7-dev9~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=226082d13a;p=thirdparty%2Fhaproxy.git BUG/MINOR: mux-h1: Do not send a last null chunk on body-less answers HEAD answers should not contain any body data. Currently when a "transfer-encoding: chunked" header is returned, a last null-chunk is added to the answer. Some clients choke on it and fail when trying to reuse the connection. Check that the response should not be body-less before sending the null-chunk. This patch should fix #1932. It must be backported as far as 2.4. --- diff --git a/src/mux_h1.c b/src/mux_h1.c index 5511e1b4ce..eee97115c4 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -2292,7 +2292,7 @@ static size_t h1_process_mux(struct h1c *h1c, struct buffer *buf, size_t count) /* EOM flag is set or empty payload (C-L to 0) and it is the last block */ if (htx_is_unique_blk(chn_htx, blk) && ((chn_htx->flags & HTX_FL_EOM) || ((h1m->flags & H1_MF_CLEN) && !h1m->curr_len))) { - if (h1m->flags & H1_MF_CHNK) { + if ((h1m->flags & H1_MF_CHNK) && !(h1s->flags & H1S_F_BODYLESS_RESP)) { if (!chunk_memcat(&tmp, "\r\n0\r\n\r\n", 7)) goto full; }