From 91fcf21e451cab0fbe0d00f2ff638c2409bbff50 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 2 Dec 2020 16:17:15 +0100 Subject: [PATCH] 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. --- src/mux_h1.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mux_h1.c b/src/mux_h1.c index 7b99f1a..266a2e7 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; -- 1.7.10.4