From eb0e8f6fcd18c127b13cde1719644cfa031aed26 Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Wed, 23 Sep 2026 16:45:32 +0200 Subject: [PATCH] BUG/MEDIUM: mux_quic: activate timeout on FE init Prior to this patch, QUIC MUX timeout was only queued after receiving the first bytes of data. Thus the timeout would be inactive after initialization if nothing is received, with a risk of connection leak. To properly address this, QUIC MUX task timeout is now queued immediately after initialization has been performed. The risk of connection leak caused by QUIC MUX is now greatly reduced. For example, the previous issue on RESET_STREAM reception handling cannot cause anymore such leak with the current code. This must be backported to all stable releases. --- src/mux_quic.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mux_quic.c b/src/mux_quic.c index b5da163cf..23433aacc 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -4111,6 +4111,12 @@ static int qcm_init(struct connection *conn, struct proxy *prx, /* Register conn for idle front closing. */ LIST_APPEND(&mux_stopping_data[tid].list, &conn->stopping_list); + if (tick_isset(qcc->task->expire)) { + /* Activate client timeout until the first bytes of data are received. */ + TRACE_DEVEL("activate default timeout", QMUX_EV_QCC_NEW, conn); + task_queue(qcc->task); + } + /* init read cycle */ tasklet_wakeup(qcc->wait_event.tasklet); -- 2.47.3