From 2e0b2b5f8363da05abab2e2012d298f4941a4f75 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 15 Sep 2017 06:59:55 +0200 Subject: [PATCH] MEDIUM: session: use the ALPN token and proxy mode to select the mux When an incoming connection is made on an HTTP mode frontend, the session now looks up the mux to use based on the ALPN token and the proxy mode. This will allow easier mux registration, and we don't need to hard-code the mux_pt_ops anymore. --- include/proto/connection.h | 8 ++++---- src/session.c | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/include/proto/connection.h b/include/proto/connection.h index fbb37904d..8ba4fc632 100644 --- a/include/proto/connection.h +++ b/include/proto/connection.h @@ -757,17 +757,17 @@ static inline const struct mux_ops *conn_find_best_mux(struct connection *conn, } /* finds the best mux for incoming connection , a proxy in and http mode - * , and installs it on the connection for direction (MUX_INBOUND/ - * MUX_OUTBOUND). Returns < 0 on error. + * , and installs it on the connection for upper context . Returns + * < 0 on error. */ -static inline int conn_install_best_mux(struct connection *conn, int mode, enum mux_dir dir) +static inline int conn_install_best_mux(struct connection *conn, int mode, void *ctx) { const struct mux_ops *mux_ops; mux_ops = conn_find_best_mux(conn, mode); if (!mux_ops) return -1; - return conn_install_mux(conn, mux_ops, dir); + return conn_install_mux(conn, mux_ops, ctx); } #endif /* _PROTO_CONNECTION_H */ diff --git a/src/session.c b/src/session.c index b0bf453ad..c68cec545 100644 --- a/src/session.c +++ b/src/session.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -407,7 +406,7 @@ static int conn_complete_session(struct connection *conn) goto fail; session_count_new(sess); - if (conn_install_mux(conn, &mux_pt_ops, NULL) < 0) + if (conn_install_best_mux(conn, sess->fe->mode == PR_MODE_HTTP, NULL) < 0) goto fail; /* the embryonic session's task is not needed anymore */