q-max-streams-credit
· RFC 9000 §4.6 · discretionary · layer quic · udp/4510 · MUST NOT
Passing this means: The RFC permits either behaviour; the report says which was chosen.
Anomaly type: transport
How each client answered
| Client | Version | Verdict | What happened |
|---|---|---|---|
| curl | ngtcp2/1.11.0 | Inconclusive | The run did not exercise this test: the client did not wait for the credit. This port grants no bidirectional stream until 700ms in, and declining to wait that long is not a violation of anything — it simply leaves the limit untested. |
| quinn | noq fork | Pass | Handled it: announced the block with 1 STREAMS_BLOCKED rather than opening a stream it had no credit for, which is what §4.6 recommends. |
| aioquic | 1.3.0 | Pass | Handled it: announced the block with 1 STREAMS_BLOCKED rather than opening a stream it had no credit for, which is what §4.6 recommends. |
| chromium | build 1223 | Pass | Handled it: announced the block with 2 STREAMS_BLOCKED rather than opening a stream it had no credit for, which is what §4.6 recommends. |
| quic-go | quic-go v0.61.0 | Pass | Handled it: announced the block with 1 STREAMS_BLOCKED rather than opening a stream it had no credit for, which is what §4.6 recommends. |
| quiche | 0.30.0 | Pass | Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant. |
| neqo | 0.31.1 | Pass | Handled it: announced the block with 1 STREAMS_BLOCKED rather than opening a stream it had no credit for, which is what §4.6 recommends. |
What the clause requires
Wait for the credit, then open the request. This port grants no bidirectional streams in its transport parameters and issues MAX_STREAMS a moment later. §4.6 is unambiguous that a client may not jump the gun — "Endpoints MUST NOT exceed the limit set by their peer" — and announcing the wait with STREAMS_BLOCKED is a SHOULD, so a client that waits quietly is equally conformant. Giving up rather than waiting is not scored as a failure: nothing obliges a one-shot client to sit on a connection it cannot use yet, and the report says which it did.
Judged against RFC 9000.
Run this one yourself
Every test is reachable from your own client. Nothing here needs an account.
curl -s https://conformance.pqcrypta.com/catalog.json \
| jq '.tests[] | select(.id == "q-max-streams-credit")'
What this suite is · The full grid · All clients · All tests · Findings