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.

(cherry picked from commit 226082d13a0d0b83114e933b3a63916b18f9824b)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
This commit is contained in:
Mickael Torres 2022-11-16 14:29:37 +01:00 committed by Christopher Faulet
parent 7dbd951a95
commit 611bfc4356

View File

@ -2355,7 +2355,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;
}