From: Frederic Lecaille Date: Thu, 28 May 2026 13:12:11 +0000 (+0200) Subject: BUG/MEDIUM: quic: reset consecutive_losses on exit from recovery period (cubic) X-Git-Tag: v3.4.0~62 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=45ad1037d038f4dbabb0a159e68421a183d482d9;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: quic: reset consecutive_losses on exit from recovery period (cubic) When exiting the recovery period and re-entering congestion avoidance, the consecutive_losses counter was not reset. This meant that if a loss event arrived immediately after the ACK that ended recovery, the counter would still hold the value that triggered recovery, causing an immediate re-entry into recovery (recovery -> CA -> recovery loop). Resetting consecutive_losses to 0 on recovery exit matches the behavior of resetting it on ACK in CA, ensuring a clean slate for the new congestion avoidance period. Must be backported to all versions. --- diff --git a/src/quic_cc_cubic.c b/src/quic_cc_cubic.c index 98ba360b8..5981d0427 100644 --- a/src/quic_cc_cubic.c +++ b/src/quic_cc_cubic.c @@ -607,6 +607,7 @@ static void quic_cc_cubic_rp_cb(struct quic_cc *cc, struct quic_cc_event *ev) c->state = QUIC_CC_ST_CA; c->recovery_start_time = TICK_ETERNITY; + c->consecutive_losses = 0; break; case QUIC_CC_EVT_LOSS: break;