From: Amaury Denoyelle Date: Tue, 20 Oct 2026 09:12:00 +0000 (+0200) Subject: BUG/MINOR: mux_quic: wake streams on soft-stop using listener socket X-Git-Tag: v3.5-dev10~101 X-Git-Url: https://git.kaiwu.me/$%7BISSUES%7D/static/gitweb.js?a=commitdiff_plain;h=c9be8d096a69474dfc52bdbdaa17f86f8c9429ce;p=haproxy.git BUG/MINOR: mux_quic: wake streams on soft-stop using listener socket Since the following patch, streams wakeup mechanism has changed so that every still present stream are notified regardless of the connection status. This is useful when qcm_wake() callback is used. Along with this change, qcc_wake_streams() via qcm_wake() is no longer directly called if the connection is on error, as previous qcc_io_process() already perform it. 044ad3a602d7b217ec1470f06ec15bca102ff685 BUG/MEDIUM: mux-quic: adjust wakeup behavior This causes issue when qcm_wake() is used to notify about proxy soft-stop. If listener socket is used, soft-stop is not really supported, so connection is flagged with CO_FL_ERROR and qcc_io_process() is interrupted. This skips stream notification, so they will remain until their timeout fire, which may block worker termination for some delay. Fix this by ensuring qcc_wake_streams() is always called if connection on error in qcc_io_process() epilogue. This must be backported up to 2.8. --- diff --git a/src/mux_quic.c b/src/mux_quic.c index 69315cba3..c8c6655e0 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -3599,11 +3599,11 @@ static int qcc_io_process(struct qcc *qcc) qcc_app_shutdown(qcc); } + out: /* Report error if set on stream endpoint layer. */ if (qcc->flags & (QC_CF_ERR_CONN|QC_CF_ERRL)) qcc_wake_streams(qcc); - out: if (qcc_is_dead(qcc)) return 1;