From d11249f2921bd39a67d58cb54b1da2aeb37300e5 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 23 May 2024 11:04:36 +0200 Subject: [PATCH] MINOR: mux-quic: Set abort info for SC-less QCS on STOP_SENDING frame 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 | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/mux_quic.c b/src/mux_quic.c index a0d586fe5..ae504ee65 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -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