]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: quic: fix ACK ECN frame parsing quic-interop flx04/quic-interop
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 13 Jan 2026 13:29:15 +0000 (14:29 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 13 Jan 2026 14:08:02 +0000 (15:08 +0100)
commit7aa839296de9e6d330c6a952ae2197aa49db1c66
treeded2aad5354ecb13b29b75ae8cd836cf8f6f78f5
parent82196eb74e5b631d718e9893582ce4b57d13d4d6
BUG/MEDIUM: quic: fix ACK ECN frame parsing

ACK frames are either of type 0x02 or 0x03. The latter is an indication
that it contains extra ECN related fields. In haproxy QUIC stack, this
is considered as a different frame type, set to QUIC_FT_ACK_ECN, with
its own set of builder/parser functions.

This patch fixes ACK ECN parsing function. Indeed, the latter suffered
from two issues. First, 'first ACK range' and 'ACK ranges' were
inverted. Then, the three remaining ECN fields were simply ignored by
the parsing function.

This issue can cause desynchronization in the frames parsing code, which
may result in various result. Most of the time, the connection will be
aborted by haproxy due to an invalid frame content read.

Note that this issue was not detected earlier as most clients do not
enable ECN support if the peer is not able to emit ACK ECN frame first,
which haproxy currently never sends. Nevertheless, this is not the case
for every client implementation, thus proper ACK ECN parsing is
mandatory for a proper QUIC stack support.

Fix this by adjusting quic_parse_ack_ecn_frame() function. The remaining
ECN fields are parsed to ensure correct packet parsing. Currently, they
are not used by the congestion controller.

This must be backported up to 2.6.
src/quic_frame.c