From e4adba6e6410dcfce72c9fbdb20ed32c45e663ef Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Wed, 13 May 2026 08:08:11 +0200 Subject: [PATCH] MINOR: mux_quic: implement basic committed_extra_streams accounting Account QUIC frontend connections into committed_extra_streams when stream elasticity setting is active. This is performed in QCC init and release functions. This patch has no impact on QUIC subsystem for now. Connections will still allow a static number of concurrent streams based on tune.quic.fe.stream.max-concurrent. However, this has a direct repercussion on H2 subsystem, as a higher count of QUIC connections will reduce the concurrent streams allowed there. --- src/mux_quic.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/mux_quic.c b/src/mux_quic.c index f9766509a..50a478bd0 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -3586,6 +3586,12 @@ static void qcc_release(struct qcc *qcc) } TRACE_PROTO("application layer released", QMUX_EV_QCC_END, conn); + if (!(qcc->flags & QC_CF_IS_BACK) && global.tune.streams_elasticity && + qcc->lfctl.ms_bidi_init > 1) { + _HA_ATOMIC_SUB(&tg_ctx->committed_extra_streams, + qcc->lfctl.ms_bidi_init - 1); + } + if (conn && !conn_is_quic(conn)) { b_free(&qcc->rx.qmux_buf); b_free(&qcc->tx.qmux_buf); @@ -3928,6 +3934,11 @@ static int qcm_init(struct connection *conn, struct proxy *prx, qcc->next_bidi_l = 0x01; qcc->largest_uni_r = 0x02; qcc->next_uni_l = 0x03; + + if (global.tune.streams_elasticity && qcc->lfctl.ms_bidi_init > 1) { + _HA_ATOMIC_ADD(&tg_ctx->committed_extra_streams, + qcc->lfctl.ms_bidi_init - 1); + } } qcc->wait_event.tasklet = tasklet_new(); -- 2.47.3