From: Amaury Denoyelle Date: Wed, 13 May 2026 06:08:11 +0000 (+0200) Subject: MINOR: mux_quic: implement basic committed_extra_streams accounting X-Git-Tag: v3.4-dev13~21 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e4adba6e6410dcfce72c9fbdb20ed32c45e663ef;p=thirdparty%2Fhaproxy.git 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. --- 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();