BUG/MINOR: mux_quic: Dropped packet upon retransmission for closed streams

We rely on the largest ID which was used to open streams to know if the
stream we received STREAM frames for is closed or not. If closed, we return the
same status as the one for a STREAM frame which  was a already received one for
on open stream.
This commit is contained in:
Frédéric Lécaille 2022-05-02 18:58:27 +02:00 committed by Amaury Denoyelle
parent d62240c9e5
commit b57de07a21

View File

@ -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); qcs = qcc_get_qcs(qcc, id);
if (!qcs) { if (!qcs) {
TRACE_DEVEL("leaving on stream not found", QMUX_EV_QCC_RECV|QMUX_EV_QCC_NQCS, qcc->conn, NULL, &id); if ((id >> QCS_ID_TYPE_SHIFT) <= qcc->strms[qcs_id_type(id)].largest_id) {
return 1; 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; *out_qcs = qcs;