From: Christopher Faulet Date: Tue, 20 Nov 2018 10:23:52 +0000 (+0100) Subject: BUG/MINOR: config: Be aware of the HTX during the check of mux protocols X-Git-Tag: v1.9-dev8~34 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7ff4f14204314eaf3936e4624934cb159cb98379;p=thirdparty%2Fhaproxy.git BUG/MINOR: config: Be aware of the HTX during the check of mux protocols Because the HTX is still experimental, we must add special cases during the configuration check to be sure it is not enabled on a proxy with incompatible options. Here, for HTX proxies, when a mux protocol is specified on a bind line or a server line, we must force the HTX mode (PROTO_MODE_HTX). Concretely, H2 is the only mux protocol that can be forced. And it doesn't yet support the HTX. So forcing the H2 on an HTX proxy will always fail. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 2eb966377d..2c660ab0da 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -3321,6 +3321,10 @@ out_uri_auth_compat: list_for_each_entry(bind_conf, &curproxy->conf.bind, by_fe) { int mode = (1 << (curproxy->mode == PR_MODE_HTTP)); + /* Special case for HTX because it is still experimental */ + if (curproxy->options2 & PR_O2_USE_HTX) + mode = PROTO_MODE_HTX; + if (!bind_conf->mux_proto) continue; if (!(bind_conf->mux_proto->mode & mode)) { @@ -3335,6 +3339,10 @@ out_uri_auth_compat: for (newsrv = curproxy->srv; newsrv; newsrv = newsrv->next) { int mode = (1 << (curproxy->mode == PR_MODE_HTTP)); + /* Special case for HTX because it is still experimental */ + if (curproxy->options2 & PR_O2_USE_HTX) + mode = PROTO_MODE_HTX; + if (!newsrv->mux_proto) continue; if (!(newsrv->mux_proto->mode & mode)) {