mtp/docs/ERRORS.md
Alex Emmet c9f2d78369
Some checks failed
CI / checks (push) Has been cancelled
General Upgrade, NEW: WebServers, Better Docs
2026-07-18 03:34:42 +02:00

2.9 KiB

Error Reference

MTP reports codec failures separately from connection and transport failures.

CodecError

Variant Meaning
UnknownVersion A codec was asked to use an unsupported protocol version.
UnknownCommunicationType A communication type has no mapping in the selected type map.
UnknownDataType A data type has no mapping in the selected type map.
ReservedCommunicationType An application attempted to use a reserved communication type ID.
InvalidEncoding Bytes do not match the MTP value or frame format.
TooManyEntries A serialized value or frame exceeds its representable size.
CryptoFailed Signing, verification, encryption, or decryption failed while encoding or decoding.
MissingField A required typed field is absent.

An application should select a TypeMap for the negotiated version and treat UnknownCommunicationType and UnknownDataType as a type-map compatibility failure. Do not send the unmapped variant again on that connection.

Retry guidance: retry ConnectionLost, ConnectingError, and transient stream errors after applying backoff. Correct the request before retrying MessageTooLarge, InvalidEncoding, MissingField, and type-map errors. Retry AuthenticationFailed only after changing credentials or host policy; repeating the same proof does not repair a validation failure.

CommunicationError

Variant Typical cause
UseAfterClosed A send or receive operation ran after the connection handle was closed.
ClosedLocally The local endpoint initiated shutdown.
ClosedByPeer The peer closed the connection.
ConnectionLost The connection ended without a normal close.
ParseCommunicationValue or ParseError An incoming frame or certificate could not be parsed.
Encode An outgoing value could not be serialized.
MessageTooLarge A frame exceeds Policy::max_message_size or the handshake limit.
StreamClosed or StreamError A QUIC stream ended or returned an I/O error.
ConnectingError or ConnectionError The endpoint could not establish or maintain QUIC.
AuthenticationFailed A login, registration, signature, nonce, or host response failed validation.
CertificateParseFailed or CertificateLoadFailed TLS certificate input is malformed or unavailable.
CryptoProviderInstallFailed The native TLS crypto provider could not be installed.
Other A component returned an error without a more specific variant.

Native builds may expose additional variants wrapping QUIC and WebTransport errors. WASM builds expose the transport-independent subset.

Authentication Rejections

The host reports unsupported or missing protocol versions through AcceptError. Authentication failures return AcceptError::AuthenticationFailed after the host sends a rejected handshake response. The authentication flow and its signed fields are defined in Security.