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.
This commit is contained in:
Willy Tarreau 2018-11-25 08:45:16 +01:00
parent ee23b2a1e3
commit 1ed87b77b4

View File

@ -2137,10 +2137,8 @@ static void h2_process_demux(struct h2c *h2c)
ret = h2c_send_rst_stream(h2c, h2s); ret = h2c_send_rst_stream(h2c, h2s);
/* error or missing data condition met above ? */ /* error or missing data condition met above ? */
if (ret <= 0) { if (ret <= 0)
h2s = NULL;
break; break;
}
if (h2c->st0 != H2_CS_FRAME_H) { if (h2c->st0 != H2_CS_FRAME_H) {
b_del(&h2c->dbuf, h2c->dfl); b_del(&h2c->dbuf, h2c->dfl);
@ -2163,7 +2161,9 @@ static void h2_process_demux(struct h2c *h2c)
h2s->recv_wait = NULL; 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 /* process Tx frames from streams to be multiplexed. Returns > 0 if it reached