h-datagram-setting-invalid
· RFC 9297 §2.1.1 · correctness · layer http3 · udp/4501 · MUST
Passing this means: Rejected something invalid, with the code the RFC names.
Anomaly type: control_stream
How each client answered
| Client | Version | Verdict | What happened |
|---|---|---|---|
| curl | ngtcp2/1.11.0 | Inconclusive | Objected, but at the QUIC layer (rejected at the QUIC layer with INTERNAL_ERROR), so the HTTP/3 error code could not be read. §8.1 carries an HTTP/3 connection error in an application close, and this test asks for 0x109 specifically — whether that was the client's reasoning is not observable from here. |
| quinn | noq fork | Inconclusive | The client completed its request and then said nothing further before the window closed. A rejection whose CONNECTION_CLOSE was lost cannot be told apart from a client that never objected: QUIC re-sends that frame only in answer to an incoming packet, so one that goes missing is simply never seen. |
| aioquic | 1.3.0 | Pass | Rejected with the required error code 0x109. |
| chromium | build 1223 | Pass | Rejected with the required error code 0x109. |
| quic-go | quic-go v0.61.0 | Fail | Rejected, but with error 0x106 where the specification requires 0x109. The violation was detected; the code reported is wrong. |
| quiche | 0.30.0 | Pass | Rejected with the required error code 0x109. |
| neqo | 0.31.1 | Pass | Rejected with the required error code 0x109. |
What the clause requires
Close the connection with H3_SETTINGS_ERROR. Unusually for a setting, RFC 9297 pins down the invalid-value case rather than leaving it open: the value "MUST be either 0 or 1", and if one "is received with a value that is neither 0 nor 1, the receiver MUST terminate the connection with error H3_SETTINGS_ERROR". This is the setting that gates HTTP Datagrams and so WebTransport, which means a client that implements either has real parsing behind it rather than an ignored identifier.
Judged against RFC 9297.
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-datagram-setting-invalid")'
What this suite is · The full grid · All clients · All tests · Findings