From eb3e5171ed56cb5e8763b459e9fee7f74d25d235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= Date: Wed, 12 Apr 2023 13:41:54 +0200 Subject: [PATCH] MINOR: quic: Add connection flags to traces This should help in diagnosing issues. Some adjustments have to be done to avoid deferencing a quic_conn objects from TRACE_*() calls. Must be backported to 2.7 and 2.6. --- src/quic_conn.c | 3 ++- src/xprt_quic.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/quic_conn.c b/src/quic_conn.c index 9412b8900..1670da40f 100644 --- a/src/quic_conn.c +++ b/src/quic_conn.c @@ -280,7 +280,7 @@ static void quic_trace(enum trace_level level, uint64_t mask, const struct trace if (qc) { const struct quic_tls_ctx *tls_ctx; - chunk_appendf(&trace_buf, " : qc@%p", qc); + chunk_appendf(&trace_buf, " : qc@%p flags=0x%x", qc, qc->flags); if (mask & QUIC_EV_CONN_INIT) { chunk_appendf(&trace_buf, "\n odcid"); quic_cid_dump(&trace_buf, &qc->odcid); @@ -5673,6 +5673,7 @@ void quic_conn_release(struct quic_conn *qc) pool_free(pool_head_quic_conn_rxbuf, qc->rx.buf.area); pool_free(pool_head_quic_conn, qc); + qc = NULL; TRACE_PROTO("QUIC conn. freed", QUIC_EV_CONN_FREED, qc); diff --git a/src/xprt_quic.c b/src/xprt_quic.c index 2a4d01e07..cfb93e7de 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -31,6 +31,7 @@ static void quic_close(struct connection *conn, void *xprt_ctx) /* If the quic-conn timer has already expired free the quic-conn. */ if (qc->flags & QUIC_FL_CONN_EXP_TIMER) { quic_conn_release(qc); + qc = NULL; goto leave; } @@ -108,7 +109,7 @@ static int qc_conn_init(struct connection *conn, void **xprt_ctx) { struct quic_conn *qc = NULL; - TRACE_ENTER(QUIC_EV_CONN_NEW, conn); + TRACE_ENTER(QUIC_EV_CONN_NEW, qc); /* do not store the context if already set */ if (*xprt_ctx)