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.
This commit is contained in:
Mickael Torres 2022-11-16 14:29:37 +01:00 committed by Christopher Faulet
parent a58af5b0a1
commit 226082d13a

View File

@ -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;
}