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.
This commit is contained in:
Christopher Faulet 2020-12-02 16:17:15 +01:00
parent e5596bf53f
commit 91fcf21e45

View File

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