BUG/MEDIUM: h2: Don't forget to wake the tasklet after shutr/shutw.

When reaching h2_shutr/h2_shutw, as we may have generated an empty frame,
a goaway or a rst, make sure we wake the I/O tasklet, or we may not send
what we just generated.
Also in h2_shutw(), don't forget to return if all went well, we don't want
to subscribe the h2s to wait events.
This commit is contained in:
Olivier Houchard 2018-12-03 18:43:16 +01:00 committed by Willy Tarreau
parent 7ccff1a3d3
commit 435ce2d71d

View File

@ -2862,6 +2862,8 @@ static void h2_do_shutr(struct h2s *h2s)
h2c_send_goaway_error(h2c, h2s) <= 0)
return;
if (!(h2c->wait_event.wait_reason & SUB_CAN_SEND))
tasklet_wakeup(h2c->wait_event.task);
h2s_close(h2s);
return;
@ -2918,6 +2920,9 @@ static void h2_do_shutw(struct h2s *h2s)
h2s_close(h2s);
}
if (!(h2c->wait_event.wait_reason & SUB_CAN_SEND))
tasklet_wakeup(h2c->wait_event.task);
return;
add_to_list:
if (LIST_ISEMPTY(&h2s->list)) {