From: Olivier Houchard Date: Wed, 8 Apr 2026 14:02:06 +0000 (+0200) Subject: MEDIUM: connections: Really enforce mux protocol requirements X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2eefd489c294b1f1f95bb19e1df0d63a9736585f;p=thirdparty%2Fhaproxy.git MEDIUM: connections: Really enforce mux protocol requirements Commit 1b0dfff552713274b95c81594b153104e215ec81 attempted to make it so the mux would expect a QUIC-like protocol or not, however it only made that we would not instantiate a non-QUIC mux on a QUIC protocol, but not that we tried to instance a QUIC mux on a non-QUIC protocol, so fix that. --- diff --git a/include/haproxy/connection.h b/include/haproxy/connection.h index c6e112733..3fb5933c4 100644 --- a/include/haproxy/connection.h +++ b/include/haproxy/connection.h @@ -616,10 +616,11 @@ static inline const struct mux_proto_list *conn_get_best_mux_entry( struct mux_proto_list *fallback = NULL; list_for_each_entry(item, &mux_proto_list.list, list) { - if (!(item->side & proto_side) || !(item->mode & proto_mode) || (proto_is_quic && !(item->mux->flags & MX_FL_FRAMED))) + if (!(item->side & proto_side) || !(item->mode & proto_mode) || ((proto_is_quic != 0) != ((item->mux->flags & MX_FL_FRAMED) != 0))) continue; - if (istlen(mux_proto) && isteq(mux_proto, item->token)) + if (istlen(mux_proto) && isteq(mux_proto, item->token)) { return item; + } else if (!istlen(item->token)) { if (!fallback || (item->mode == proto_mode && fallback->mode != proto_mode)) fallback = item;