From 1ed87b77b43253dc6ea6e6211e2d8ec935a88769 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 25 Nov 2018 08:45:16 +0100 Subject: [PATCH] BUG/MEDIUM: h2: wake the processing task up after demuxing After the changes to the connection layer in 1.9, some wake up calls need to be introduced to re-activate reading from the connection. One such place is at the end of h2_process_demux(), otherwise processing of input data stops after a few frames. No backport is needed. --- src/mux_h2.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mux_h2.c b/src/mux_h2.c index 9e4f80178..f059e3b97 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -2137,10 +2137,8 @@ static void h2_process_demux(struct h2c *h2c) ret = h2c_send_rst_stream(h2c, h2s); /* error or missing data condition met above ? */ - if (ret <= 0) { - h2s = NULL; + if (ret <= 0) break; - } if (h2c->st0 != H2_CS_FRAME_H) { b_del(&h2c->dbuf, h2c->dfl); @@ -2163,7 +2161,9 @@ static void h2_process_demux(struct h2c *h2c) h2s->recv_wait = NULL; } } - return; + + if (h2_recv_allowed(h2c)) + tasklet_wakeup(h2c->wait_event.task); } /* process Tx frames from streams to be multiplexed. Returns > 0 if it reached