PQ Crypta Logo

Response stream reset mid-body with H3_REQUEST_CANCELLED

Abandon the partial response — §4.1 says a response cancelled after a partial delivery "SHOULD NOT be used". Whether the connection survives is the client's to choose: §8 lets an endpoint "treat a stream error as a connection error under certain circumstances", so keeping the connection and closing it are both conformant. Stalling is the one wrong answer.

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.

h-response-stream-reset · RFC 9114 §8, §4.1 · discretionary · layer http3 · udp/4494 · MAY

Passing this means: The RFC permits either behaviour; the report says which was chosen.

Anomaly type: response_stream

How each client answered

ClientVersionVerdictWhat happened
curl libcurl/8.23.0 ngtcp2/1.25.0 Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
quinn noq fork (189b0ed) Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
aioquic 1.3.0 (PyPI wheel) Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
chromium build 1248 Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
quic-go quic-go v0.61.0 (h1:9So2anK4Tp22) Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
quiche 0.30.0 (1c8e976) 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 (cac2b74) Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
picoquic 8162550 Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
ngtcp2 3c23148 Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
lsquic 4.9.4 (2b30189) Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
xquic 2060a44 Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
msquic 2.7.0 (7e6525d) Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.
quico 0.7.0 (npm) Pass Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant.

What the clause requires

Abandon the partial response — §4.1 says a response cancelled after a partial delivery "SHOULD NOT be used". Whether the connection survives is the client's to choose: §8 lets an endpoint "treat a stream error as a connection error under certain circumstances", so keeping the connection and closing it are both conformant. Stalling is the one wrong answer.

Judged against RFC 9114.

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 == "h-response-stream-reset")'