From: Christopher Faulet Date: Fri, 3 Jul 2020 13:12:00 +0000 (+0200) Subject: BUG/MINOR: mux-h1: Disable splicing only if input data was processed X-Git-Tag: v2.2.0~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7b7016bf6e69f61074684e9145e1a6784b6a9d03;p=thirdparty%2Fhaproxy.git BUG/MINOR: mux-h1: Disable splicing only if input data was processed In h1_rcv_buf(), the splicing is systematically disabled if it was previously enabled. When it happens, if the splicing is enabled it means the channel's buffer was empty before calling h1_rcv_buf(). Thus, the only reason to disable the splicing at this step is when some input data have just been processed. This patch may be backported to 2.1 and 2.0. --- diff --git a/src/mux_h1.c b/src/mux_h1.c index 7aa448c2b6..97f0a22be5 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -2688,7 +2688,7 @@ static size_t h1_rcv_buf(struct conn_stream *cs, struct buffer *buf, size_t coun } } else { - if (h1s->flags & H1S_F_SPLICED_DATA) { + if (ret && h1s->flags & H1S_F_SPLICED_DATA) { h1s->flags &= ~H1S_F_SPLICED_DATA; TRACE_STATE("disable splicing", H1_EV_STRM_RECV, h1c->conn, h1s); }