h-data-before-headers
· RFC 9114 §4.1 · correctness · layer http3 · udp/4491 · MUST
Passing this means: Rejected something invalid, with the code the RFC names.
Anomaly type: response_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 0x105 specifically — whether that was the client's reasoning is not observable from here. |
| quinn | noq fork | Pass | Rejected with the required error code 0x105. |
| aioquic | 1.3.0 | Pass | Rejected with the required error code 0x105. |
| chromium | build 1223 | Pass | Rejected with the required error code 0x105. |
| quic-go | quic-go v0.61.0 | Pass | Rejected with the required error code 0x105. |
| quiche | 0.30.0 | Fail | Accepted a protocol violation and carried on. The anomaly was in the response the client read and delivered, so it was seen; this should have been rejected. |
| neqo | 0.31.1 | Pass | Rejected with the required error code 0x105. |
| picoquic | 8162550 | Pass | Rejected with the required error code 0x105. |
| ngtcp2 | 3c23148 | Pass | Rejected with the required error code 0x105. |
| lsquic | 4.9.4 | Pass | Rejected with the required error code 0x105. |
| xquic | 2060a44 | Inconclusive | The run did not exercise this test: the endpoint refused the connection before a handshake existed (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake). On this tier that is what a client offering no key exchange group this port will negotiate looks like -- a fact about the client, not a gap in the run. |
| msquic | 2.7.0 | Fail | Rejected, but with error 0x102 where the specification requires 0x105. The violation was detected; the code reported is wrong. |
What the clause requires
Close the connection with H3_FRAME_UNEXPECTED. A response begins with a field section, and §4.1 makes "receipt of an invalid sequence of frames" a connection error of that type — a body arriving before the headers that describe it is exactly that.
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-data-before-headers")'