From: Christopher Faulet Date: Wed, 2 Dec 2020 15:17:15 +0000 (+0100) Subject: MINOR: mux-h1: Don't emit C-L and T-E headers for 204 and 1xx responses X-Git-Tag: v2.4-dev7~92 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=91fcf21e451cab0fbe0d00f2ff638c2409bbff50;p=thirdparty%2Fhaproxy.git MINOR: mux-h1: Don't emit C-L and T-E headers for 204 and 1xx responses 204 and 1xx responses must not have any payload. Now, the H1 mux takes care of that in last resort. But they also must not have any C-L or T-E headers. Thus, if found on the sending path, these headers are ignored. --- diff --git a/src/mux_h1.c b/src/mux_h1.c index 7b99f1a79c..266a2e70d7 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -1828,9 +1828,14 @@ static size_t h1_process_output(struct h1c *h1c, struct buffer *buf, size_t coun if (*(n.ptr) == ':') goto skip_hdr; - if (isteq(n, ist("transfer-encoding"))) + if (isteq(n, ist("transfer-encoding"))) { + if ((h1m->flags & H1_MF_RESP) && (h1s->status < 200 || h1s->status == 204)) + goto skip_hdr; h1_parse_xfer_enc_header(h1m, v); + } else if (isteq(n, ist("content-length"))) { + if ((h1m->flags & H1_MF_RESP) && (h1s->status < 200 || h1s->status == 204)) + goto skip_hdr; /* Only skip C-L header with invalid value. */ if (h1_parse_cont_len_header(h1m, &v) < 0) goto skip_hdr;