]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MAJOR: quic: Useless resource intensive loop qc_ackrng_pkts()
authorFrédéric Lécaille <flecaille@haproxy.com>
Fri, 22 Jul 2022 14:27:44 +0000 (16:27 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 29 Jul 2022 15:32:05 +0000 (17:32 +0200)
This usless loop should have been removed a long time ago. As it is CPU resource
intensive, it could trigger the watchdog.

Must be backported to 2.6.

src/xprt_quic.c

index 2c66058732ed420c0e5fa1a59909175964240c07..4a77db16a6b5c067cfbbd14ed555fa5eb48dbfd4 100644 (file)
@@ -1602,15 +1602,7 @@ static inline struct eb64_node *qc_ackrng_pkts(struct quic_conn *qc,
        struct eb64_node *node;
        struct quic_tx_packet *pkt;
 
-       if (largest_node)
-               node = largest_node;
-       else {
-               node = eb64_lookup(pkts, largest);
-               while (!node && largest > smallest) {
-                       node = eb64_lookup(pkts, --largest);
-               }
-       }
-
+       node = largest_node ? largest_node : eb64_lookup_le(pkts, largest);
        while (node && node->key >= smallest) {
                struct quic_frame *frm, *frmbak;