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.
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)) {
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)) {