]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: mux-h2: Don't bother keeping the h2s if detaching and nothing to send.
authorOlivier Houchard <ohouchard@haproxy.com>
Thu, 21 Mar 2019 14:48:46 +0000 (15:48 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 21 Mar 2019 17:28:31 +0000 (18:28 +0100)
In h2_detach(), don't bother keeping the h2s even if it was waiting for
flow control if we no longer are subscribed for receiving or sending, as
nobody will do anything once we can write in the mux, anyway. Failing to do
so may lead to h2s being kept opened forever.

This should be backported to 1.9.

src/mux_h2.c

index 1169066103fda3bf9e46d73fb2f36067fd0a6533..f8b9ecc8399d0710946b540348465f8bed2347cd 100644 (file)
@@ -3007,7 +3007,7 @@ static void h2_detach(struct conn_stream *cs)
         */
        if (!(cs->conn->flags & CO_FL_ERROR) &&
            (h2c->st0 < H2_CS_ERROR) &&
-           (h2s->flags & (H2_SF_BLK_MBUSY | H2_SF_BLK_MROOM | H2_SF_BLK_MFCTL)))
+           (h2s->flags & (H2_SF_BLK_MBUSY | H2_SF_BLK_MROOM | H2_SF_BLK_MFCTL)) && (h2s->send_wait || h2s->recv_wait))
                return;
 
        if ((h2c->flags & H2_CF_DEM_BLOCK_ANY && h2s->id == h2c->dsi) ||