From: Olivier Houchard Date: Fri, 30 Nov 2018 14:39:16 +0000 (+0100) Subject: MEDIUM: h2: Destroy a connection with no stream if it has no owner. X-Git-Tag: v1.9-dev9~99 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=93c88525727f8234eefaeee73ecb71ddb40d7f5c;p=thirdparty%2Fhaproxy.git MEDIUM: h2: Destroy a connection with no stream if it has no owner. In h2_detach(), if the connection has no stream left, and no associated owner, then destroy it, as nobody else will be able to. --- diff --git a/src/mux_h2.c b/src/mux_h2.c index 336bd4e0f9..c91905f92c 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -2622,6 +2622,7 @@ static void h2_detach(struct conn_stream *cs) ((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 | H2_CF_GOAWAY_SENT)) || + (!(h2c->conn->owner)) || /* Nobody's left to take care of the connection, drop it now */ (!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))))) {