From: Amaury Denoyelle Date: Thu, 23 Apr 2026 12:23:01 +0000 (+0200) Subject: BUG/MINOR: mux_quic: open an idle QCS on reset on BE side X-Git-Tag: v3.4.0~68 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=802a3b72884b619694c57c51d5f9795b2934dff4;p=thirdparty%2Fhaproxy.git 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. --- 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);