]> git.kaiwu.me - haproxy.git/commit
BUG/MINOR: quic: fix rxbuf settings on backend side
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 12 Jun 2026 13:40:46 +0000 (15:40 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 15 Jun 2026 07:36:42 +0000 (09:36 +0200)
commit08aa12392d80e807bb697060e9397f7dc58f3415
treeaefbcd7f32d13e2673ca1a49dee8eedc04b18aa0
parent82a16a29274b29d51ed18c1f683a7df56fa2a997
BUG/MINOR: quic: fix rxbuf settings on backend side

QUIC flow control on bidirectional streams ensure that the peer cannot
emit more than what haproxy has allowed, which guarantees that buffering
is under controlled on the receiver side.

This limit is first announced on the transport parameter via
initial_max_stream_data_bidi_remote which is derived from configuration
value. QUIC MUX calculation for its streams is then directly based on
the transport parameter.

This mechanism works as expected on the frontend side, as in this case
all exchanges occur on remote streams opened by the opposite side.
However, this is not working as expected on the backend side, as in this
case transfers occur on streams opened locally by haproxy as the client.
Thus, configuration has no impact on backend side rxbuf which remains
set to a single buffer, causing important latency when retrieving large
objects.

This patch removes this limitation on the backend side by adjusting
quic_transport_params_init(). If <server> parameter is false, limitation
is set for initial_max_stream_data_bidi_local TP.

This must be backported up to 3.3.
src/quic_tp.c