MINOR: muxes: Don't expect to have a mux without connection in destroy callback

Once a mux initialized, the underlying connection alwaus exists from its
point of view and it is never removed until the mux is released. It may be
owned by another mux during an upgrade. But the pointer remains set. Thus
there is no reason to test it in the destroy callback function.

This patch should fix the issue #1652.
This commit is contained in:
Christopher Faulet 2022-04-14 11:08:26 +02:00
parent 86b08a3e3e
commit 7c452ccbff
4 changed files with 6 additions and 5 deletions

View file

@ -3576,7 +3576,7 @@ static void fcgi_destroy(void *ctx)
struct fcgi_conn *fconn = ctx;
TRACE_POINT(FCGI_EV_FCONN_END, fconn->conn);
if (eb_is_empty(&fconn->streams_by_id) || !fconn->conn || fconn->conn->ctx != fconn)
if (eb_is_empty(&fconn->streams_by_id) || fconn->conn->ctx != fconn)
fcgi_release(fconn);
}

View file

@ -3337,7 +3337,7 @@ static void h1_destroy(void *ctx)
struct h1c *h1c = ctx;
TRACE_POINT(H1_EV_H1C_END, h1c->conn);
if (!h1c->h1s || !h1c->conn || h1c->conn->ctx != h1c)
if (!h1c->h1s || h1c->conn->ctx != h1c)
h1_release(h1c);
}

View file

@ -4350,7 +4350,7 @@ static void h2_destroy(void *ctx)
struct h2c *h2c = ctx;
TRACE_ENTER(H2_EV_H2C_END, h2c->conn);
if (eb_is_empty(&h2c->streams_by_id) || !h2c->conn || h2c->conn->ctx != h2c)
if (eb_is_empty(&h2c->streams_by_id) || h2c->conn->ctx != h2c)
h2_release(h2c);
TRACE_LEAVE(H2_EV_H2C_END);
}

View file

@ -413,9 +413,10 @@ static void mux_pt_destroy_meth(void *ctx)
struct mux_pt_ctx *pt = ctx;
TRACE_POINT(PT_EV_CONN_END, pt->conn, pt->cs);
if ((pt->endp->flags & CS_EP_ORPHAN) || !(pt->conn) || pt->conn->ctx != pt) {
if (pt->conn->ctx != pt)
if ((pt->endp->flags & CS_EP_ORPHAN) || pt->conn->ctx != pt) {
if (pt->conn->ctx != pt) {
pt->endp = NULL;
}
mux_pt_destroy(pt);
}
}