|
|
- commit 074230876d05bdf3fe33893889b326da14ab8ae9
- Author: Christopher Faulet <cfaulet@haproxy.com>
- Date: Thu Oct 24 10:31:01 2019 +0200
-
- BUG/MINOR: mux-h2: Don't pretend mux buffers aren't full anymore if nothing sent
-
- In h2_send(), when something is sent, we remove the flags
- (H2_CF_MUX_MFULL|H2_CF_DEM_MROOM) on the h2 connection. This way, we are able to
- wake up all streams waiting to send data. Unfortunatly, these flags are
- unconditionally removed, even when nothing was sent. So if the h2c is blocked
- because the mux buffers are full and we are unable to send anything, all streams
- in the send_list are woken up for nothing. Now, we only remove these flags if at
- least a send succeeds.
-
- This patch must be backport to 2.0.
-
- (cherry picked from commit 69fe5cea213afd0c7465094e9dfead93143dcf3f)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
- diff --git a/src/mux_h2.c b/src/mux_h2.c
- index afa68e80..ac34a723 100644
- --- a/src/mux_h2.c
- +++ b/src/mux_h2.c
- @@ -2943,7 +2943,8 @@ static int h2_send(struct h2c *h2c)
- offer_buffers(NULL, tasks_run_queue);
-
- /* wrote at least one byte, the buffer is not full anymore */
- - h2c->flags &= ~(H2_CF_MUX_MFULL | H2_CF_DEM_MROOM);
- + if (sent)
- + h2c->flags &= ~(H2_CF_MUX_MFULL | H2_CF_DEM_MROOM);
- }
-
- if (conn->flags & CO_FL_SOCK_WR_SH) {
|