PQ Crypta Logo

Stateless reset

Recognise the token in the last 16 bytes of the datagram, enter the draining period, and send no further packets on the connection. The packet cannot be authenticated, so there is nothing to reply with and nothing to report to the peer — continuing to send is the failure §10.3.1 names.

PQ CRYPTA PLATFORM

🏠 Main

📰 News

👤 Account

⟨ QUANTUM ERROR PORTAL ⟩

Navigate the Error Dimensions

Jump to an anomaly59

Every one of these is a page: what the server emits, the clause it is judged against, and how each client answered. The full list carries the verdict tallies too.

q-stateless-reset · RFC 9000 §10.3 · correctness · layer quic · udp/4465 · MUST

Passing this means: Rejected something invalid, with the code the RFC names.

Anomaly type: transport

How each client answered

ClientVersionVerdictWhat happened
curl libcurl/8.23.0 ngtcp2/1.25.0 Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).
quinn noq fork (189b0ed) Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).
aioquic 1.3.0 (PyPI wheel) Fail kept sending after the Stateless Reset: 2 more datagram(s) arrived in the following 3 seconds, after a 500ms grace for packets already in flight (89 of those). RFC 9000 §10.3.1 requires a client that recognises the token to enter the draining period and send nothing further, so this connection is wedged against an endpoint that has forgotten it.
chromium build 1248 Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).
quic-go quic-go v0.61.0 (h1:9So2anK4Tp22) Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).
quiche 0.30.0 (1c8e976) Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).
neqo 0.31.1 (cac2b74) Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).
picoquic 8162550 Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).
ngtcp2 3c23148 Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).
lsquic 4.9.4 (2b30189) Fail kept sending after the Stateless Reset: 9 more datagram(s) arrived in the following 3 seconds, after a 500ms grace for packets already in flight (0 of those). RFC 9000 §10.3.1 requires a client that recognises the token to enter the draining period and send nothing further, so this connection is wedged against an endpoint that has forgotten it.
xquic 2060a44 Inconclusive The run did not exercise this test: no Stateless Reset was triggered in the 12s after the endpoint forgot the connection, so there was nothing for the client to recognise: 0 datagram(s) arrived in that time.
msquic 2.7.0 (7e6525d) Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).
quico 0.7.0 (npm) Pass Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires (0 datagram(s) were already in flight when the reset went out and are not counted against it).

What the clause requires

Recognise the token in the last 16 bytes of the datagram, enter the draining period, and send no further packets on the connection. The packet cannot be authenticated, so there is nothing to reply with and nothing to report to the peer — continuing to send is the failure §10.3.1 names.

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-stateless-reset")'