]> git.kaiwu.me - haproxy.git/commit
BUG/MINOR: quic: reject RETIRE_CONNECTION_ID for a CID not sent to the peer
authorFrederic Lecaille <flecaille@haproxy.com>
Thu, 12 Nov 2026 10:50:05 +0000 (11:50 +0100)
committerFrederic Lecaille <flecaille@haproxy.com>
Thu, 12 Nov 2026 10:50:05 +0000 (11:50 +0100)
commita50bb45ba922c588cd2b842e52d7774ea3316293
tree2afc711866924322a08589511de1eb0381f39afe
parent827354038df8b6fb4603116ecc85ec2d54478cd5
BUG/MINOR: quic: reject RETIRE_CONNECTION_ID for a CID not sent to the peer

A RETIRE_CONNECTION_ID frame for a sequence number below
<next_cid_seq_num> is accepted even if the corresponding
NEW_CONNECTION_ID frame has not been sent yet: the counter counts
allocated CIDs, not sent ones. A client can thus retire a CID it
cannot know about, for example the one allocated while processing a
previous RETIRE_CONNECTION_ID frame of the same packet. This is
forbidden by RFC 9000 19.16.

This adds <max_sent_cid_seq_num>, updated when a packet containing
NEW_CONNECTION_ID frame(s) is sent, and rejects such
RETIRE_CONNECTION_ID frames with a connection error of type
PROTOCOL_VIOLATION, as required by RFC 9000 19.16.

Must be backported as far as 2.8.
include/haproxy/quic_conn-t.h
include/haproxy/quic_tx-t.h
src/quic_conn.c
src/quic_frame.c
src/quic_rx.c
src/quic_tx.c