From: Frédéric Lécaille Date: Wed, 30 Mar 2022 12:58:55 +0000 (+0200) Subject: BUG/MINOR: quic: Non duplicated frames upon fast retransmission X-Git-Tag: v2.6-dev5~67 X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/static/gitweb.js?a=commitdiff_plain;h=009016c0cdc0a725e621d334968b974ff71b311a;p=haproxy.git 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. --- diff --git a/src/xprt_quic.c b/src/xprt_quic.c index c48d1c251..591751871 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -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) {