From: Willy Tarreau Date: Tue, 13 Oct 2020 16:09:15 +0000 (+0200) Subject: BUG/MINOR: mux-h2: do not stop outgoing connections on stopping X-Git-Tag: v2.3-dev7~54 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b1e600c9c5e4a20a6de1f3b9593f20dc50f01315;p=thirdparty%2Fhaproxy.git BUG/MINOR: mux-h2: do not stop outgoing connections on stopping There are reports of a few "SC" in logs during reloads when H2 is used on the backend side. Christopher analysed this as being caused by the proxy disabled test in h2_process(). As the comment says, this was done for frontends only, and must absolutely not send a GOAWAY to the backend, as all it will result in is to make newly queued streams fail. The fix consists in simply testing the connection side before deciding to send the GOAWAY. This may be backported as far as 2.0, though for whatever reason it seems to manifest itself only since 2.2 (probably due to changes in the outgoing connection setup sequence). --- diff --git a/src/mux_h2.c b/src/mux_h2.c index 1b73d2b46f..307bf90123 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -3609,7 +3609,7 @@ static int h2_process(struct h2c *h2c) } h2_send(h2c); - if (unlikely(h2c->proxy->disabled)) { + if (unlikely(h2c->proxy->disabled) && !(h2c->flags & H2_CF_IS_BACK)) { /* frontend is stopping, reload likely in progress, let's try * to announce a graceful shutdown if not yet done. We don't * care if it fails, it will be tried again later.