]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: quic: Leak of frames to send.
authorFrédéric Lécaille <flecaille@haproxy.com>
Wed, 13 Sep 2023 07:28:10 +0000 (09:28 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 13 Sep 2023 13:32:14 +0000 (15:32 +0200)
In very rare cases, it is possible that packet are detected as lost, their frames
requeued, then the connection is released without releasing for any reason (to
be killed because of a sendto() fatal failure for instance. Such frames are lost
and never release because the function which release their packet number spaces
does not release the frames which are still enqueued to be send.

Must be backported as far as 2.6.

src/quic_tls.c

index ae5207887f12e3f8dd888b0ffa1cef2460175790..182b62696d2044e94799d9f17e9e88e01515bd1f 100644 (file)
@@ -86,6 +86,7 @@ void quic_pktns_release(struct quic_conn *qc, struct quic_pktns **pktns)
                return;
 
        quic_pktns_tx_pkts_release(*pktns, qc);
+       qc_release_pktns_frms(qc, *pktns);
        quic_free_arngs(qc, &(*pktns)->rx.arngs);
        LIST_DEL_INIT(&(*pktns)->list);
        pool_free(pool_head_quic_pktns, *pktns);