From: Amaury Denoyelle Date: Thu, 20 Mar 2025 17:10:56 +0000 (+0100) Subject: BUG/MINOR: mux-quic: remove extra BUG_ON() in _qcc_send_stream() X-Git-Tag: v3.2-dev8~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c5f8df8d55e6a85f72e415c63188345dc670e53b;p=thirdparty%2Fhaproxy.git BUG/MINOR: mux-quic: remove extra BUG_ON() in _qcc_send_stream() The following patch fixed a BUG_ON() which could be triggered if RS/SS emission was scheduled after stream local closure. 7ee1279f4b8416435faba5cb93a9be713f52e4df BUG/MEDIUM: mux-quic: fix crash on RS/SS emission if already close local qcc_send_stream() was rewritten as a wrapper around an internal _qcc_send_stream() used to bypass the faulty BUG_ON(). However, an extra unnecessary BUG_ON() was added by mistake in _qcc_send_stream(). This should not cause any issue, as the BUG_ON() is only active if argument is false, which is not the case for RS/SS emission. However, this patch is labelled as a bug as this BUG_ON() is unnecessary and may cause issues in the future. This should be backported up to 2.8, after the above mentionned patch. --- diff --git a/src/mux_quic.c b/src/mux_quic.c index 5c39ef757..5d76677e3 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -1536,9 +1536,6 @@ static void _qcc_send_stream(struct qcs *qcs, int urg) LIST_INSERT(&qcc->send_list, &qcs->el_send); } else { - /* Cannot send STREAM if already closed. */ - BUG_ON(qcs_is_close_local(qcs)); - if (!LIST_INLIST(&qcs->el_send)) LIST_APPEND(&qcs->qcc->send_list, &qcs->el_send); } @@ -1598,6 +1595,7 @@ void qcc_send_stream(struct qcs *qcs, int urg, int count) /* Cannot send STREAM if already closed. */ BUG_ON(qcs_is_close_local(qcs)); + _qcc_send_stream(qcs, urg); if (count) {