From: Christopher Faulet Date: Mon, 21 Jan 2019 10:49:37 +0000 (+0100) Subject: BUG/MEDIUM: mux-h2/htx: Respect the channel's reserve X-Git-Tag: v2.0-dev1~176 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a413e958fd1f84915b80842273e5daee3448a2cc;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: mux-h2/htx: Respect the channel's reserve When data are pushed in the channel's buffer, in h2_rcv_buf(), the mux-h2 must respect the reserve if the flag CO_RFL_KEEP_RSV is set. In HTX, because the stream-interface always sees the buffer as full, there is no other way to know the reserve must be respected. This patch must be backported to 1.9. --- diff --git a/src/mux_h2.c b/src/mux_h2.c index 20ff988218..acc38e8e29 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -5051,7 +5051,12 @@ static size_t h2_rcv_buf(struct conn_stream *cs, struct buffer *buf, size_t coun } buf_htx = htx_from_buf(buf); - count = htx_free_space(buf_htx); + count = htx_free_data_space(buf_htx); + if (flags & CO_RFL_KEEP_RSV) { + if (count <= global.tune.maxrewrite) + goto end; + count -= global.tune.maxrewrite; + } htx_ret = htx_xfer_blks(buf_htx, h2s_htx, count, HTX_BLK_EOM);