]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: mux-quic: remove extra BUG_ON() in _qcc_send_stream()
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 20 Mar 2025 17:10:56 +0000 (18:10 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 20 Mar 2025 17:18:52 +0000 (18:18 +0100)
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 <urg>
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.

src/mux_quic.c

index 5c39ef757a6ae7c98014c272986ee1baedb045ad..5d76677e364c39b2822e96f8354c819faef0d0f7 100644 (file)
@@ -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) {