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>
(cherry picked from commit 611bfc4356544a44a1fc11024eee3eac4de1293d)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 01740c1794ed9b1dfdc90d7e03e3214cc81c16bc)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/mux_h1.c b/src/mux_h1.c
index 9bb3d3a..f407492 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -2133,7 +2133,7 @@
/* 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;
}