]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: h2: wake the processing task up after demuxing
authorWilly Tarreau <w@1wt.eu>
Sun, 25 Nov 2018 07:45:16 +0000 (08:45 +0100)
committerWilly Tarreau <w@1wt.eu>
Sun, 25 Nov 2018 07:52:11 +0000 (08:52 +0100)
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

index 9e4f80178f19e38edc9631509616883cfa6ada11..f059e3b97b9a3041b5de82e383f2fe239f8bfa45 100644 (file)
@@ -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