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.
This commit is contained in:
Amaury Denoyelle 2021-09-24 10:03:16 +02:00
parent 75dd2b7987
commit 139814a67a

View File

@ -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;