]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: quic: reset cwnd in slow_start on persistent congestion (cubic)
authorFrederic Lecaille <flecaille@haproxy.com>
Thu, 28 May 2026 13:08:07 +0000 (15:08 +0200)
committerFrederic Lecaille <flecaille@haproxy.com>
Thu, 28 May 2026 15:47:31 +0000 (17:47 +0200)
The cubic slow_start callback was only resetting the internal cubic state
without reducing the congestion window, unlike newreno which calls
quic_cc_path_reset(). Per RFC 9002, persistent congestion should trigger
both entry into slow start and a reduction of the congestion window.

Must be backported to all versions.

src/quic_cc_cubic.c

index 2532b54dcb316388ba9f0b83491bfe3bad806bf3..98ba360b8ac147342185ea9f2359b105bcc203de 100644 (file)
@@ -390,7 +390,10 @@ static inline void quic_cubic_update(struct quic_cc *cc, uint32_t acked)
 
 static void quic_cc_cubic_slow_start(struct quic_cc *cc)
 {
+       struct quic_cc_path *path = container_of(cc, struct quic_cc_path, cc);
+
        TRACE_ENTER(QUIC_EV_CONN_CC, cc->qc);
+       quic_cc_path_reset(path);
        quic_cc_cubic_reset(cc);
        TRACE_LEAVE(QUIC_EV_CONN_CC, cc->qc);
 }