From 2d37629222489d12ced97c1221b78322aba3431a Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Wed, 8 Mar 2023 09:42:31 +0100 Subject: [PATCH] MINOR: quic: handle new closing list in show quic A new global quic-conn list has been added by the previous patch. It will contain every quic-conn in closing or draining state. Thus, it is now easier to include or skip them on a "show quic" output : when the default list on the current thread has been browsed entirely, either we skip to the next thread or we look at the closing list on the current thread. This should be backported up to 2.7. --- src/quic_conn.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/quic_conn.c b/src/quic_conn.c index 9a5176624..66da15829 100644 --- a/src/quic_conn.c +++ b/src/quic_conn.c @@ -8183,9 +8183,25 @@ static int cli_io_handler_dump_quic(struct appctx *appctx) int i; if (ctx->bref.ref == &ha_thread_ctx[ctx->thr].quic_conns) { + /* If closing connections requested through "all", move + * to quic_conns_clo list after browsing quic_conns. + * Else move directly to the next quic_conns thread. + */ + if (ctx->flags & QC_CLI_FL_SHOW_ALL) { + ctx->bref.ref = ha_thread_ctx[ctx->thr].quic_conns_clo.n; + continue; + } + + done = 1; + } + else if (ctx->bref.ref == &ha_thread_ctx[ctx->thr].quic_conns_clo) { + /* Closing list entirely browsed, go to next quic_conns + * thread. + */ done = 1; } else { + /* Retrieve next element of the current list. */ qc = LIST_ELEM(ctx->bref.ref, struct quic_conn *, el_th_ctx); if ((int)(qc->qc_epoch - ctx->epoch) > 0) done = 1; @@ -8195,16 +8211,11 @@ static int cli_io_handler_dump_quic(struct appctx *appctx) ++ctx->thr; if (ctx->thr >= global.nbthread) break; + /* Switch to next thread quic_conns list. */ ctx->bref.ref = ha_thread_ctx[ctx->thr].quic_conns.n; continue; } - if (!(ctx->flags & QC_CLI_FL_SHOW_ALL) && - qc->flags & (QUIC_FL_CONN_CLOSING|QUIC_FL_CONN_DRAINING)) { - ctx->bref.ref = qc->el_th_ctx.n; - continue; - } - /* CIDs */ chunk_appendf(&trash, "* %p[%02u]: scid=", qc, qc->tid); for (cid_len = 0; cid_len < qc->scid.len; ++cid_len)