§3.5.

Termination

The Transport Session can be terminated at any point. When native QUIC is used, the session is closed using the CONNECTION_CLOSE frame ([QUIC], Section 19.19). When WebTransport is used, the session is closed using the CLOSE_WEBTRANSPORT_SESSION capsule ([WebTransport], Section 6).

When terminating the Session, the application MAY use any error message and SHOULD use a relevant code, as defined below:

NO_ERROR (0x0):

The session is being terminated without an error.

INTERNAL_ERROR (0x1):

An implementation specific error occurred.

UNAUTHORIZED (0x2):

The client is not authorized to establish a session.

PROTOCOL_VIOLATION (0x3):

The remote endpoint performed an action that was disallowed by the specification.

INVALID_REQUEST_ID (0x4):

The endpoint received a Request ID with an incorrect least significant bit for the sender, or a duplicate Request ID. See Section 10.1.

DUPLICATE_TRACK_ALIAS (0x5):

The endpoint attempted to use a Track Alias that was already in use.

KEY_VALUE_FORMATTING_ERROR (0x6):

The key-value pair has a formatting error.

INVALID_PATH (0x8):

The PATH parameter was used by a server, on a WebTransport session, or the server does not support the path.

MALFORMED_PATH (0x9):

The PATH parameter does not conform to the rules in Section 10.3.1.2.

GOAWAY_TIMEOUT (0x10):

The session was closed because the peer took too long to close the session in response to a GOAWAY (Section 10.4) message. See session migration (Section 3.6).

CONTROL_MESSAGE_TIMEOUT (0x11):

The session was closed because the peer took too long to respond to a control message.

DATA_STREAM_TIMEOUT (0x12):

The session was closed because the peer took too long to send data expected on an open Data Stream (see Section 11). This includes fields of a stream header or an object header within a data stream. If an endpoint times out waiting for a new object header on an open subgroup stream, it MAY send a STOP_SENDING on that stream or terminate the subscription.

AUTH_TOKEN_CACHE_OVERFLOW (0x13):

The Session limit Section 10.3.1.3 of the size of all registered Authorization tokens has been exceeded.

DUPLICATE_AUTH_TOKEN_ALIAS (0x14):

Authorization Token attempted to register an Alias that was in use (see Section 10.2.2).

VERSION_NEGOTIATION_FAILED (0x15):

The client didn't offer a version supported by the server.

MALFORMED_AUTH_TOKEN (0x16):

Invalid Auth Token serialization during registration (see Section 10.2.2).

UNKNOWN_AUTH_TOKEN_ALIAS (0x17):

No registered token found for the provided Alias (see Section 10.2.2).

EXPIRED_AUTH_TOKEN (0x18):

Authorization token has expired (Section 10.2.2).

INVALID_AUTHORITY (0x19):

The specified AUTHORITY does not correspond to this server or cannot be used in this context.

MALFORMED_AUTHORITY (0x1A):

The AUTHORITY value is syntactically invalid.

TOO_MANY_REQUEST_UPDATES (0x1B):

The endpoint received a REQUEST_UPDATE that exceeded the per-stream limit communicated via the MAX_REQUEST_UPDATES Setup Option (Section 10.3.1.7).

An endpoint MAY choose to treat a subscription or request specific error as a session error under certain circumstances, closing the entire session in response to a condition with a single subscription or message. Implementations need to consider the impact on other outstanding subscriptions before making this choice.

This is one section of the MoQT specification, rendered per-section for quick reference and citation. The authoritative text is draft-ietf-moq-transport-19 at the IETF.