diff --git a/src/mux_quic.c b/src/mux_quic.c index e129df818..d5f448ca5 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -363,8 +363,14 @@ int qcc_recv(struct qcc *qcc, uint64_t id, uint64_t len, uint64_t offset, qcs = qcc_get_qcs(qcc, id); if (!qcs) { - TRACE_DEVEL("leaving on stream not found", QMUX_EV_QCC_RECV|QMUX_EV_QCC_NQCS, qcc->conn, NULL, &id); - return 1; + if ((id >> QCS_ID_TYPE_SHIFT) <= qcc->strms[qcs_id_type(id)].largest_id) { + TRACE_DEVEL("already released stream", QMUX_EV_QCC_RECV|QMUX_EV_QCC_NQCS, qcc->conn, NULL, &id); + return 0; + } + else { + TRACE_DEVEL("leaving on stream not found", QMUX_EV_QCC_RECV|QMUX_EV_QCC_NQCS, qcc->conn, NULL, &id); + return 1; + } } *out_qcs = qcs;