mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-10 07:49:54 +00:00
BUG/MEDIUM: checks: Be sure we have a mux if we created a cs.
In connect_conn_chk(), there were one case we could return with a new conn_stream created, but no mux attached. With no mux, cs_destroy() would segfault. Fix that by setting the mux before we can fail. This should be backported to 1.8.
This commit is contained in:
parent
57dc283014
commit
6377a0004f
22
src/checks.c
22
src/checks.c
@ -1564,18 +1564,6 @@ static int connect_conn_chk(struct task *t)
|
||||
conn->addr.to = s->addr;
|
||||
}
|
||||
|
||||
if ((conn->addr.to.ss_family == AF_INET) || (conn->addr.to.ss_family == AF_INET6)) {
|
||||
int i = 0;
|
||||
|
||||
i = srv_check_healthcheck_port(check);
|
||||
if (i == 0) {
|
||||
cs->data = check;
|
||||
return SF_ERR_CHK_PORT;
|
||||
}
|
||||
|
||||
set_host_port(&conn->addr.to, i);
|
||||
}
|
||||
|
||||
proto = protocol_by_family(conn->addr.to.ss_family);
|
||||
|
||||
conn_prepare(conn, proto, check->xprt);
|
||||
@ -1583,6 +1571,16 @@ static int connect_conn_chk(struct task *t)
|
||||
cs_attach(cs, check, &check_conn_cb);
|
||||
conn->target = &s->obj_type;
|
||||
|
||||
if ((conn->addr.to.ss_family == AF_INET) || (conn->addr.to.ss_family == AF_INET6)) {
|
||||
int i = 0;
|
||||
|
||||
i = srv_check_healthcheck_port(check);
|
||||
if (i == 0)
|
||||
return SF_ERR_CHK_PORT;
|
||||
|
||||
set_host_port(&conn->addr.to, i);
|
||||
}
|
||||
|
||||
/* no client address */
|
||||
clear_addr(&conn->addr.from);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user