From: Amaury Denoyelle Date: Wed, 23 Sep 2026 14:45:32 +0000 (+0200) Subject: BUG/MEDIUM: mux_quic: activate timeout on FE init X-Git-Tag: v3.5-dev8~116 X-Git-Url: https://git.kaiwu.me/?a=commitdiff_plain;h=eb0e8f6fcd18c127b13cde1719644cfa031aed26;p=haproxy.git 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. --- 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);