From 45ad1037d038f4dbabb0a159e68421a183d482d9 Mon Sep 17 00:00:00 2001 From: Frederic Lecaille Date: Thu, 28 May 2026 15:12:11 +0200 Subject: [PATCH] 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. --- src/quic_cc_cubic.c | 1 + 1 file changed, 1 insertion(+) 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;