BUG/MINOR: quic: Leak of frames to send.

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.
This commit is contained in:
Frdric Lcaille 2023-09-13 09:28:10 +02:00 committed by Willy Tarreau
parent 2a19f7c43b
commit 3921bf80c7

View 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);