PROTOCOL_VIOLATION
QUIC PROTOCOL_VIOLATION (0x0a) is the catch-all for generic QUIC protocol violations that do not have a more specific error code. The peer did something not permitted by the QUIC specification that does not fit any named error category. This is the QUIC equivalent of HTTP/2 PROTOCOL_ERROR.
Code
0x0a
Decimal
10
Standard
RFC 9000 §20
Description
PROTOCOL_VIOLATION covers any QUIC behavior that violates the specification but does not have a dedicated error code. Examples: an endpoint sending a HANDSHAKE_DONE frame as a client (only servers may send this), sending a frame type that is prohibited in the current encryption level (e.g., a STREAM frame in a Handshake packet), or a server sending a NEW_TOKEN frame before the handshake is complete. Like HTTP/2's PROTOCOL_ERROR, QUIC's PROTOCOL_VIOLATION is the most general error code and catches all the edge cases that more specific codes do not address. When debugging a PROTOCOL_VIOLATION, the description string in the CONNECTION_CLOSE frame (if present) usually provides a more specific explanation. QUIC is stricter than HTTP/1.1 in protocol conformance. Many behaviors that HTTP/1.1 tolerates as quirks are protocol violations in QUIC.
Common Causes
- –Client sent a HANDSHAKE_DONE frame (server-only frame)
- –STREAM frame sent in a packet at the wrong encryption level
- –Server sent NEW_TOKEN before handshake completion
- –Frame type prohibited in the current connection state
- –Specific violation not covered by another error code