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 20ff988..acc38e8 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -5051,7 +5051,12 @@
}
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);