]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: mux-quic: Set abort info for SC-less QCS on STOP_SENDING frame
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 23 May 2024 09:04:36 +0000 (11:04 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 23 May 2024 09:18:19 +0000 (11:18 +0200)
It is a revert of cc9827bb09 ("BUG/MEDIUM: mux-quic: fix crash on
STOP_SENDING received without SD"). This fix was based on a wrong assumption
about QUIC streams that may have no stream-endpoint descriptor. However, it
must never happen. And this was fixed. So we can now safely revert the
commit above. However, it is not a bugfix because, for now, abort info are
only used by the upper layer. So it is not a big deal to not set it when
there is no SC.

src/mux_quic.c

index a0d586fe5ef578af5fe79ffc284e702b607988de..ae504ee652433767b167c7e58faed10cc9fb1fe5 100644 (file)
@@ -1606,18 +1606,16 @@ int qcc_recv_stop_sending(struct qcc *qcc, uint64_t id, uint64_t err)
                }
        }
 
-       if (qcs_sc(qcs)) {
-               /* Manually set EOS if FIN already reached as futures RESET_STREAM will be ignored in this case. */
-               if (se_fl_test(qcs->sd, SE_FL_EOI)) {
-                       se_fl_set(qcs->sd, SE_FL_EOS);
-                       qcs_alert(qcs);
-               }
+       /* Manually set EOS if FIN already reached as futures RESET_STREAM will be ignored in this case. */
+       if (qcs_sc(qcs) && se_fl_test(qcs->sd, SE_FL_EOI)) {
+               se_fl_set(qcs->sd, SE_FL_EOS);
+               qcs_alert(qcs);
+       }
 
-               /* If not defined yet, set abort info for the sedesc */
-               if (!qcs->sd->abort_info.info) {
-                       qcs->sd->abort_info.info = (SE_ABRT_SRC_MUX_QUIC << SE_ABRT_SRC_SHIFT);
-                       qcs->sd->abort_info.code = err;
-               }
+       /* If not defined yet, set abort info for the sedesc */
+       if (!qcs->sd->abort_info.info) {
+               qcs->sd->abort_info.info = (SE_ABRT_SRC_MUX_QUIC << SE_ABRT_SRC_SHIFT);
+               qcs->sd->abort_info.code = err;
        }
 
        /* RFC 9000 3.5. Solicited State Transitions