BUG/MINOR: quic: Missing initializations for ducplicated frames.
When duplication frames in qc_dup_pkt_frms(), ->pkt member was not correctly
initialized (copied from the original frame). This could not have any impact
because this member is initialized whe the frame is added to a packet.
This was also the case for ->flags.
Also replace the pool_zalloc() call by a call to pool_alloc().
Must be backported to 2.6.
diff --git a/src/xprt_quic.c b/src/xprt_quic.c
index b9f2742..e4cc35b 100644
--- a/src/xprt_quic.c
+++ b/src/xprt_quic.c
@@ -2330,8 +2330,7 @@
break;
}
- // FIXME: zalloc
- dup_frm = pool_zalloc(pool_head_quic_frame);
+ dup_frm = pool_alloc(pool_head_quic_frame);
if (!dup_frm) {
TRACE_ERROR("could not duplicate frame", QUIC_EV_CONN_PRSAFRM, qc, frm);
break;
@@ -2342,11 +2341,13 @@
*/
origin = frm->origin ? frm->origin : frm;
TRACE_DEVEL("built probing frame", QUIC_EV_CONN_PRSAFRM, qc, origin);
- *dup_frm = *origin;
- LIST_INIT(&dup_frm->reflist);
TRACE_DEVEL("duplicated from packet", QUIC_EV_CONN_PRSAFRM,
qc, NULL, &origin->pkt->pn_node.key);
+ *dup_frm = *origin;
+ dup_frm->pkt = NULL;
dup_frm->origin = origin;
+ dup_frm->flags = 0;
+ LIST_INIT(&dup_frm->reflist);
LIST_APPEND(&origin->reflist, &dup_frm->ref);
LIST_APPEND(&tmp, &dup_frm->list);
}