From 7ccff1a3d3e51210acfcd0d9cf5014507319bb65 Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Mon, 3 Dec 2018 16:33:19 +0100 Subject: [PATCH] BUG/MEDIUM: h1: Destroy a connection after detach if it has no owner. Destroy the connection while detaching, even if it has keep alive, if it has no owner, or nobody else will be able to do so. --- src/mux_h1.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mux_h1.c b/src/mux_h1.c index b01e5d768..ff54adc56 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -1722,7 +1722,7 @@ static void h1_detach(struct conn_stream *cs) h1c = h1s->h1c; h1s->cs = NULL; - if (conn_is_back(h1c->conn) && (h1s->flags & H1S_F_WANT_KAL)) { + if (conn_is_back(h1c->conn) && (h1s->flags & H1S_F_WANT_KAL) && h1c->conn->owner) { /* Never ever allow to reuse a connection from a non-reuse backend */ if (h1c->conn && (h1c->px->options & PR_O_REUSE_MASK) == PR_O_REUSE_NEVR) h1c->conn->flags |= CO_FL_PRIVATE; @@ -1746,7 +1746,7 @@ static void h1_detach(struct conn_stream *cs) /* We don't want to close right now unless the connection is in error */ if ((h1c->flags & (H1C_F_CS_ERROR|H1C_F_CS_SHUTW)) || - (h1c->conn->flags & CO_FL_ERROR)) + (h1c->conn->flags & CO_FL_ERROR) || !h1c->conn->owner) h1_release(h1c->conn); else tasklet_wakeup(h1c->wait_event.task);