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.
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);
}
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);
}
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);
}
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);
}
}