From: Olivier Houchard Date: Sun, 21 Oct 2018 01:01:20 +0000 (+0200) Subject: BUG/MEDIUM: h2: Close connection if no stream is left an GOAWAY was sent. X-Git-Tag: v1.9-dev4~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=52b946686c28891a4359e9361676dc62af4fffad;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: h2: Close connection if no stream is left an GOAWAY was sent. When we're closing a stream, is there's no stream left and a goaway was sent, close the connection, there's no reason to keep it open. [wt: it's likely that this is needed in 1.8 as well, though it's unclear how to trigger this issue, some tests are needed] --- diff --git a/src/mux_h2.c b/src/mux_h2.c index 4fe811af4b..ae885d9337 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -2649,7 +2649,7 @@ static void h2_detach(struct conn_stream *cs) if (eb_is_empty(&h2c->streams_by_id) && /* don't close if streams exist */ ((h2c->conn->flags & CO_FL_ERROR) || /* errors close immediately */ (h2c->st0 >= H2_CS_ERROR && !h2c->task) || /* a timeout stroke earlier */ - (h2c->flags & H2_CF_GOAWAY_FAILED) || + (h2c->flags & (H2_CF_GOAWAY_FAILED | H2_CF_GOAWAY_SENT)) || (!b_data(&h2c->mbuf) && /* mux buffer empty, also process clean events below */ (conn_xprt_read0_pending(h2c->conn) || (h2c->last_sid >= 0 && h2c->max_id >= h2c->last_sid))))) {