From: Olivier Houchard Date: Mon, 3 Dec 2018 17:43:16 +0000 (+0100) Subject: BUG/MEDIUM: h2: Don't forget to wake the tasklet after shutr/shutw. X-Git-Tag: v1.9-dev10~63 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=435ce2d71d9fdb6a1a83e34025367e8e564172b9;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/mux_h2.c b/src/mux_h2.c index b5800f33a6..8d5c9de073 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -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)) {