STREAM_LIMIT_ERROR
QUIC STREAM_LIMIT_ERROR (0x04) is sent when an endpoint receives a frame for a stream identifier that exceeds its advertised stream limit. QUIC uses MAX_STREAMS frames to control how many concurrent streams a peer may open. Opening more streams than permitted terminates the connection.
Code
0x04
Decimal
4
Standard
RFC 9000 §20
Description
QUIC stream identifiers are allocated by each endpoint: the client uses even IDs for client-initiated streams, the server uses odd IDs. Each endpoint advertises a maximum stream ID via MAX_STREAMS frames. If the peer opens a stream with an ID beyond the current limit, the receiver sends CONNECTION_CLOSE with STREAM_LIMIT_ERROR. This is distinct from HTTP/2's REFUSED_STREAM: in QUIC, exceeding the stream limit is a fatal connection error, not a recoverable per-stream error. The connection is terminated and a new connection must be established. QUIC implementations that correctly implement flow control will never trigger this in normal operation. It indicates either an implementation bug in stream ID allocation, or a deliberate stream-flooding attack.
Common Causes
- –Client opened more streams than the server's MAX_STREAMS allowed
- –QUIC implementation bug allocating stream IDs beyond the limit
- –Stream limit not refreshed and implementation erroneously continued opening streams