From: Amaury Denoyelle Date: Wed, 8 Mar 2023 08:42:31 +0000 (+0100) Subject: MINOR: quic: handle new closing list in show quic X-Git-Tag: v2.8-dev5~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2d37629222489d12ced97c1221b78322aba3431a;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/quic_conn.c b/src/quic_conn.c index 9a5176624e..66da15829d 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)