From: Olivier Houchard Date: Fri, 18 Oct 2019 08:59:30 +0000 (+0200) Subject: Revert e8826ded5fea3593d89da2be5c2d81c522070995. X-Git-Tag: v2.1-dev3~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9dce2c53a8e49d43b501c3025d41705d302b1df1;p=thirdparty%2Fhaproxy.git Revert e8826ded5fea3593d89da2be5c2d81c522070995. This reverts commit "BUG/MEDIUM: mux_pt: Make sure we don't have a conn_stream before freeing.". mux_pt_io_cb() is only used if we have no associated stream, so we will never have a cs, so there's no need to check that, and we of course have to destroy the mux in mux_pt_detach() if we have no associated session, or if there's an error on the connection. This should be backported to 2.0 and 1.9. --- diff --git a/src/mux_pt.c b/src/mux_pt.c index b957ed6322..a86cbefd92 100644 --- a/src/mux_pt.c +++ b/src/mux_pt.c @@ -51,10 +51,9 @@ static struct task *mux_pt_io_cb(struct task *t, void *tctx, unsigned short stat struct mux_pt_ctx *ctx = tctx; conn_sock_drain(ctx->conn); - if (ctx->conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_SOCK_WR_SH)) { - if (!ctx->cs) - mux_pt_destroy(ctx); - } else + if (ctx->conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_SOCK_WR_SH)) + mux_pt_destroy(ctx); + else ctx->conn->xprt->subscribe(ctx->conn, ctx->conn->xprt_ctx, SUB_RETRY_RECV, &ctx->wait_event); @@ -194,7 +193,7 @@ static void mux_pt_detach(struct conn_stream *cs) !(conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_SOCK_WR_SH))) { ctx->cs = NULL; conn->xprt->subscribe(conn, conn->xprt_ctx, SUB_RETRY_RECV, &ctx->wait_event); - } else if (!ctx->cs) + } else /* There's no session attached to that connection, destroy it */ mux_pt_destroy(ctx); }