mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-05 10:58:14 +00:00
BUG/MEDIUM: connection/mux: take care of serverless proxies
Commit 7ce0c89
("MEDIUM: mux: Use the mux protocol specified on
bind/server lines") assumed a bit too strongly that we could only have
servers on the connect side :-) It segfaults under this config :
defaults
contimeout 5s
clitimeout 5s
srvtimeout 5s
mode http
listen test1
bind :8001
dispatch 127.0.0.1:8002
frontend test2
mode http
bind :8002
redirect location /
No backport needed.
This commit is contained in:
parent
7ce0c891ab
commit
287527a176
@ -1068,14 +1068,21 @@ static inline int conn_install_mux_fe(struct connection *conn, void *ctx)
|
||||
static inline int conn_install_mux_be(struct connection *conn, void *ctx)
|
||||
{
|
||||
struct server *srv = objt_server(conn->target);
|
||||
struct proxy *prx = objt_proxy(conn->target);
|
||||
const struct mux_ops *mux_ops;
|
||||
|
||||
if (srv->mux_proto)
|
||||
if (srv)
|
||||
prx = srv->proxy;
|
||||
|
||||
if (!prx) // target must be either proxy or server
|
||||
return -1;
|
||||
|
||||
if (srv && srv->mux_proto)
|
||||
mux_ops = srv->mux_proto->mux;
|
||||
else {
|
||||
int mode;
|
||||
|
||||
mode = (1 << (srv->proxy->mode == PR_MODE_HTTP));
|
||||
mode = (1 << (prx->mode == PR_MODE_HTTP));
|
||||
mux_ops = conn_get_best_mux(conn, ist(NULL), PROTO_SIDE_BE, mode);
|
||||
if (!mux_ops)
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user