From 139814a67aa592cb231bf9a491cfae975f7a0c1a Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Fri, 24 Sep 2021 10:03:16 +0200 Subject: [PATCH] BUG/MEDIUM: mux-quic: reinsert all streams in by_id tree It is required that all qcs streams are in the by_id tree for the xprt to function correctly. Without this, some ACKs are not properly emitted by xprt. Note that this change breaks the free of the connection because the condition eb_is_empty in qc_detach is always true. This will be fixed in a following patch. --- src/mux_quic.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/mux_quic.c b/src/mux_quic.c index c4673ee86f..19b021acbf 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -1030,9 +1030,7 @@ struct qcs *luqs_new(struct qcc *qcc) qcs->subs = NULL; LIST_INIT(&qcs->list); - // TODO do not insert luqs into streams_by_id as it prevent to detect - // that the connection is dead - //eb64_insert(&qcc->streams_by_id, &qcs->by_id); + eb64_insert(&qcc->streams_by_id, &qcs->by_id); TRACE_LEAVE(QC_EV_QCS_NEW, qcc->conn); return qcs; @@ -1074,9 +1072,7 @@ struct qcs *ruqs_new(struct qcc *qcc, uint64_t id) qcs->subs = NULL; LIST_INIT(&qcs->list); - // TODO do not insert ruqs into streams_by_id as it prevent to detect - // that the connection is dead - //eb64_insert(&qcc->streams_by_id, &qcs->by_id); + eb64_insert(&qcc->streams_by_id, &qcs->by_id); TRACE_LEAVE(QC_EV_QCS_NEW, qcc->conn); return qcs; -- 2.47.3