]> git.kaiwu.me - haproxy.git/commit
BUG/MINOR: quic: avoid a division by zero in the BBR pacing interval
authorWilly Tarreau <w@1wt.eu>
Thu, 6 Aug 2026 07:45:26 +0000 (09:45 +0200)
committerFrederic Lecaille <flecaille@haproxy.com>
Wed, 12 Aug 2026 13:51:40 +0000 (15:51 +0200)
commitb644541e0f3b7e4bb9b41c0b7c0c24f62f6c61fd
tree0fbf426a4076011a4d267c5f32ff60cbefb338e5
parent7c43f85abcabb985873fa09579b077e55d544ea0
BUG/MINOR: quic: avoid a division by zero in the BBR pacing interval

bbr_pacing_inter() divides by the connection's pacing rate without
checking it. That rate is recomputed as a truncated integer product of the
estimated bandwidth by the pacing gain, and once full bandwidth has been
reached the new value is stored unconditionally, even when it truncated
down to zero. So a QUIC peer that acknowledges slowly and sparsely enough
to drive the bandwidth estimate down to a single byte per second, then
lets the connection leave Startup, makes the next pacing computation
divide by zero.

The resulting SIGFPE is not caught, so it takes down the whole worker
along with every connection it was serving, which any remote QUIC client
controls the conditions of.

Let's floor the divisor at 1, as the default pacing helper effectively
does.

Must be backported as far as 3.1.

Reported-by: Claude (ANT-2026-6B82W4A7)
src/quic_cc_bbr.c