From 802a3b72884b619694c57c51d5f9795b2934dff4 Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Thu, 23 Apr 2026 14:23:01 +0200 Subject: [PATCH] BUG/MINOR: mux_quic: open an idle QCS on reset on BE side On the backend side, a QCS may be opened but resetted immediately. No STREAM frame will be emitted prior to the RESET_STREAM. When the latter is sent, qcs_close_local() will mark the QCS Tx channel as closed. In this case, a BUG_ON() would be triggered as there is QCS Tx channel is not yet marked as opened. To prevent this, add a qcs_idle_open() call when the stream is resetted, but only for the backend side. This should be backported up to 3.3. --- src/mux_quic.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mux_quic.c b/src/mux_quic.c index b36799a6b..2edc88b78 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -1737,6 +1737,10 @@ void qcc_reset_stream(struct qcs *qcs, int err, int tevt) qcs->flags |= QC_SF_TO_RESET; qcs->err = err; + /* On BE side, a QCS may be resetted before any data emission. */ + if (conn_is_back(qcs->qcc->conn)) + qcs_idle_open(qcs); + if (diff) { const int soft_blocked = qfctl_sblocked(&qcc->tx.fc);