]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: Add traces about TX frame memory releasing
authorFrédéric Lécaille <flecaille@haproxy.com>
Thu, 21 Apr 2022 16:10:41 +0000 (18:10 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 28 Apr 2022 14:22:40 +0000 (16:22 +0200)
Add such traces in qc_treat_acked_tx_frm(). This should be helpful to track memory
leak issues for TX frames.

src/xprt_quic.c

index 4eb4d24088b009c22d52ee4bbc1d69d1ee183e0f..b1ffc12fc564879903046ed4a1ed52606caa0aee 100644 (file)
@@ -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);
        }