mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-15 21:59:41 -04:00
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:
parent
86b08a3e3e
commit
7c452ccbff
4 changed files with 6 additions and 5 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue