BUG/MINOR: quic: Non duplicated frames upon fast retransmission

We must duplicate the frames to be sent again from packets which are not deemed
lost.
This commit is contained in:
Frédéric Lécaille 2022-03-30 14:58:55 +02:00 committed by Amaury Denoyelle
parent 5cfb4edca7
commit 009016c0cd

View File

@ -2347,10 +2347,18 @@ static void qc_prep_hdshk_fast_retrans(struct quic_conn *qc)
qel->pktns->tx.pto_probe += 1;
requeue:
list_for_each_entry_safe(frm, frmbak, &pkt->frms, list) {
struct quic_frame *dup_frm;
dup_frm = pool_alloc(pool_head_quic_frame);
if (!dup_frm) {
TRACE_PROTO("could not duplicate frame", QUIC_EV_CONN_PRSAFRM, qc, frm);
break;
}
TRACE_PROTO("to resend frame", QUIC_EV_CONN_PRSAFRM, qc, frm);
LIST_DELETE(&frm->list);
frm->pkt = NULL;
LIST_APPEND(tmp, &frm->list);
*dup_frm = *frm;
LIST_APPEND(tmp, &dup_frm->list);
}
if (qel == iqel) {