Skip to main content

QUIC Transport Error Codes

QUIC error codes appear in CONNECTION_CLOSE frames. All 17 codes from RFC 9000 §20.

CodeName & Description
0x00

NO_ERROR

QUIC NO_ERROR (0x00) is used in CONNECTION_CLOSE to signal a clean connection shutdown with no error condition.

0x01

INTERNAL_ERROR

QUIC INTERNAL_ERROR (0x01) is sent when the QUIC implementation encounters an unexpected internal failure that prevents continuing the connection.

0x02

CONNECTION_REFUSED

QUIC CONNECTION_REFUSED (0x02) is sent when the server refuses to accept a new connection.

0x03

FLOW_CONTROL_ERROR

QUIC FLOW_CONTROL_ERROR (0x03) is sent when an endpoint receives more data than its advertised flow control limits allow.

0x04

STREAM_LIMIT_ERROR

QUIC STREAM_LIMIT_ERROR (0x04) is sent when an endpoint receives a frame for a stream identifier that exceeds its advertised stream limit.

0x05

STREAM_STATE_ERROR

QUIC STREAM_STATE_ERROR (0x05) is sent when a STREAM frame is received for a stream that is not in a state that permits that frame.

0x06

FINAL_SIZE_ERROR

QUIC FINAL_SIZE_ERROR (0x06) is sent when the final size of a stream is inconsistent.

0x07

FRAME_ENCODING_ERROR

QUIC FRAME_ENCODING_ERROR (0x07) is sent when a QUIC frame cannot be decoded.

0x08

TRANSPORT_PARAMETER_ERROR

QUIC TRANSPORT_PARAMETER_ERROR (0x08) is sent when a QUIC transport parameter is invalid, duplicated, or forbidden in a particular context.

0x09

CONNECTION_ID_LIMIT_ERROR

QUIC CONNECTION_ID_LIMIT_ERROR (0x09) is sent when too many connection IDs have been provided.

0x0a

PROTOCOL_VIOLATION

QUIC PROTOCOL_VIOLATION (0x0a) is the catch-all for generic QUIC protocol violations that do not have a more specific error code.

0x0b

INVALID_TOKEN

QUIC INVALID_TOKEN (0x0b) is sent when the server receives an Initial packet containing a token that cannot be validated.

0x0c

APPLICATION_ERROR

QUIC APPLICATION_ERROR (0x0c) is sent when the application running over QUIC encounters an error and needs to close the connection.

0x0d

CRYPTO_BUFFER_EXCEEDED

QUIC CRYPTO_BUFFER_EXCEEDED (0x0d) is sent when the total amount of TLS handshake data in CRYPTO frames exceeds the implementation's buffer limit.

0x0e

KEY_UPDATE_ERROR

QUIC KEY_UPDATE_ERROR (0x0e) is sent when a problem occurs with packet protection key updates.

0x0f

AEAD_LIMIT_REACHED

QUIC AEAD_LIMIT_REACHED (0x0f) is sent when the usage limits for an AEAD key have been reached.

0x10

NO_VIABLE_PATH

QUIC NO_VIABLE_PATH (0x10) is sent when there is no viable network path to the peer.

0x11

VERSION_NEGOTIATION_ERROR

QUIC VERSION_NEGOTIATION_ERROR (0x11) is sent when a QUIC version negotiation attempt fails.