]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: mux_quic: do not exceed stream.max-concurrent on backend side
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 18 May 2026 08:53:37 +0000 (10:53 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 20 May 2026 12:42:03 +0000 (14:42 +0200)
commit47a61eb86d4008bd1f9b722fa726eb63c079a244
tree1ee68df4edc5b9a8350ac66fa0572f71ad240df4
parentb7c607e207f94328c6b53243e46a1d1185a9ef1b
BUG/MINOR: mux_quic: do not exceed stream.max-concurrent on backend side

Fix usage of stream.max-concurrent QUIC setting on the backend side.
Contrary to frontend connections, this limit must be enforced by QUIC
MUX directly. This is necessary as the peer may allow a larger number of
concurrent streams via its flow control.

First, QUIC TP initial max bidi streams value is now set to 0. This is
fine as only the HTTP/3 client is expected to open bidirectional
streams.

The most important changes is performed in qcm_avail_streams(). The
value first depends on the peer flow control. Now, it is further reduced
if necessary to not exceed the configured BE stream.max-concurrent.

Note that this new behavior may further increases current limitation on
QUIC BE reuse when a QCS instance is kept while its upper stream layer
is detached. In this case there is a risk that the connection is not
reinserted in the correct server pool, as an idle or avail one.

This is a breaking change as BE stream.max-concurrent keyword setting
meaning is changed in effect. However, this does not necessitate extra
warnings as the previous usage was in effect useless. Furthermore, QUIC
on the backend side is still considered as experimental.

This can be backported up to 3.3.
doc/configuration.txt
include/haproxy/mux_quic.h
src/mux_quic.c
src/quic_tp.c