mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 05:41:26 +02:00
BUG/MEDIUM: connection: Make sure we have a mux before calling detach().
In some cases, we call cs_destroy() very early, so early the connection doesn't yet have a mux, so we can't call mux->detach(). In this case, just destroy the associated connection. This should be backported to 1.8.
This commit is contained in:
parent
48aa13f286
commit
302f9ef055
@ -699,7 +699,20 @@ static inline void conn_free(struct connection *conn)
|
|||||||
/* Release a conn_stream, and kill the connection if it was the last one */
|
/* Release a conn_stream, and kill the connection if it was the last one */
|
||||||
static inline void cs_destroy(struct conn_stream *cs)
|
static inline void cs_destroy(struct conn_stream *cs)
|
||||||
{
|
{
|
||||||
cs->conn->mux->detach(cs);
|
if (cs->conn->mux)
|
||||||
|
cs->conn->mux->detach(cs);
|
||||||
|
else {
|
||||||
|
/* It's too early to have a mux, let's just destroy
|
||||||
|
* the connection
|
||||||
|
*/
|
||||||
|
struct connection *conn = cs->conn;
|
||||||
|
|
||||||
|
conn_stop_tracking(conn);
|
||||||
|
conn_full_close(conn);
|
||||||
|
if (conn->destroy_cb)
|
||||||
|
conn->destroy_cb(conn);
|
||||||
|
conn_free(conn);
|
||||||
|
}
|
||||||
cs_free(cs);
|
cs_free(cs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user