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.
This commit is contained in:
Olivier Houchard 2018-11-30 15:39:16 +01:00 committed by Willy Tarreau
parent bf024f0a15
commit 93c8852572

View File

@ -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))))) {