From 209404bff1a652a0940a31fc9ff2549368641ee7 Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Fri, 20 May 2022 16:45:32 +0200 Subject: [PATCH] MINOR: mux-quic: emit STREAM_LIMIT_ERROR Send a CONNECTION_CLOSE on reception of a STREAM frame for a STREAM id exceeding the maximum value enforced. Only implemented for bidirectional streams for the moment. --- src/mux_quic.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/mux_quic.c b/src/mux_quic.c index 8485f818b..443eee7f0 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -384,7 +384,14 @@ struct qcs *qcc_get_qcs(struct qcc *qcc, uint64_t id) /* TODO also checks max-streams for uni streams */ if (quic_stream_is_bidi(id)) { if (sub_id + 1 > qcc->lfctl.ms_bidi) { - /* streams limit reached */ + /* RFC 9000 4.6. Controlling Concurrency + * + * An endpoint that receives a frame with a + * stream ID exceeding the limit it has sent + * MUST treat this as a connection error of + * type STREAM_LIMIT_ERROR + */ + qcc_emit_cc(qcc, QC_ERR_STREAM_LIMIT_ERROR); goto out; } }