From: Amaury Denoyelle Date: Fri, 24 Sep 2021 08:03:16 +0000 (+0200) Subject: BUG/MEDIUM: mux-quic: reinsert all streams in by_id tree X-Git-Tag: v2.5-dev9~40 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=139814a67aa592cb231bf9a491cfae975f7a0c1a;p=thirdparty%2Fhaproxy.git 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. --- 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;