From 226082d13a0d0b83114e933b3a63916b18f9824b Mon Sep 17 00:00:00 2001 From: Mickael Torres Date: Wed, 16 Nov 2022 14:29:37 +0100 Subject: [PATCH] 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. --- src/mux_h1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; } -- 2.39.5