]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MEDIUM: ssl: allow h3/QMux negotiation without explicit proto
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 19 May 2026 15:54:05 +0000 (17:54 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 19 May 2026 16:40:50 +0000 (18:40 +0200)
commitf2b152c95e53f6047ce8277a1bef769b4f781540
tree6fb8836d288762229d8471c7f0c82ee3bc1d481e
parente30bcfe6cda364620451062a606eaa6636f1a3f6
MEDIUM: ssl: allow h3/QMux negotiation without explicit proto

Implements automatic selection of QMux MUX if "h3" ALPN has been
negotiated on top of TCP/SSL.

The first part of this change is to define "alpn" member of
mux_proto_list. This is necessary so that conn_get_best_mux_entry() can
select it when "h3" has been chosen. As a side-effect, this also
automatically sets a default ALPN to "h3" for bind lines with "proto
qmux".

The most important change is to adapt the SSL layer. On handshake
completion, the eligible MUX is retrieved via conn_select_mux_fe/be()
functions. If xprt_qmux is required by it, MUX init is delayed and QMux
handshake is started first.

This last change is necessary as connection flags CO_FL_QMUX_RECV/SEND
are only set if "proto qmux" is explicitely set. In case xprt_qmux is
activated via pure ALPN negotiation, these flags are also set on
xprt_qmux_init(). This is mandatory to ensure emission/reception of QMux
transport parameters will be performed as expected.
src/mux_quic.c
src/ssl_sock.c
src/xprt_qmux.c