From: Frédéric Lécaille Date: Thu, 21 Apr 2022 16:10:41 +0000 (+0200) Subject: MINOR: quic: Add traces about TX frame memory releasing X-Git-Tag: v2.6-dev8~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e87b3ee9f57b65045e9cf7eaf835422874bbe3a7;p=thirdparty%2Fhaproxy.git MINOR: quic: Add traces about TX frame memory releasing Add such traces in qc_treat_acked_tx_frm(). This should be helpful to track memory leak issues for TX frames. --- diff --git a/src/xprt_quic.c b/src/xprt_quic.c index 4eb4d24088..b1ffc12fc5 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -1484,6 +1484,7 @@ static inline void qc_treat_acked_tx_frm(struct quic_conn *qc, struct quic_frame *frm) { int stream_acked; + uint64_t pn; TRACE_PROTO("Removing frame", QUIC_EV_CONN_PRSAFRM, qc, frm); stream_acked = 0; @@ -1507,7 +1508,10 @@ static inline void qc_treat_acked_tx_frm(struct quic_conn *qc, if (!node) { TRACE_PROTO("acked stream for released stream", QUIC_EV_CONN_ACKSTRM, qc, strm_frm); LIST_DELETE(&frm->list); + pn = frm->pkt->pn_node.key; quic_tx_packet_refdec(frm->pkt); + TRACE_PROTO("freeing frame from packet", + QUIC_EV_CONN_PRSAFRM, qc, frm, &pn); pool_free(pool_head_quic_frame, frm); /* early return */ @@ -1527,13 +1531,19 @@ static inline void qc_treat_acked_tx_frm(struct quic_conn *qc, /* no need to continue if stream freed. */ TRACE_PROTO("stream released and freed", QUIC_EV_CONN_ACKSTRM, qc); LIST_DELETE(&frm->list); + pn = frm->pkt->pn_node.key; quic_tx_packet_refdec(frm->pkt); + TRACE_PROTO("freeing frame from packet", + QUIC_EV_CONN_PRSAFRM, qc, frm, &pn); pool_free(pool_head_quic_frame, frm); break; } LIST_DELETE(&frm->list); + pn = frm->pkt->pn_node.key; quic_tx_packet_refdec(frm->pkt); + TRACE_PROTO("freeing frame from packet", + QUIC_EV_CONN_PRSAFRM, qc, frm, &pn); pool_free(pool_head_quic_frame, frm); } else { @@ -1545,7 +1555,10 @@ static inline void qc_treat_acked_tx_frm(struct quic_conn *qc, break; default: LIST_DELETE(&frm->list); + pn = frm->pkt->pn_node.key; quic_tx_packet_refdec(frm->pkt); + TRACE_PROTO("freeing frame from packet", + QUIC_EV_CONN_PRSAFRM, qc, frm, &pn); pool_free(pool_head_quic_frame, frm); }