Skip to content

MoQT draft-07 Error Codes

MoQT draft-07 assigns 21 code points across 3 registries — Termination, SUBSCRIBE_ERROR and SUBSCRIBE_DONE — plus 5 Object Status values, which are a separate family and are never counted with the rest. Of the 21, 21 are assignments and 0 are reserved.

Every row below was read out of draft-ietf-moq-transport-07 by the same extraction the moqtap Rust codec's conformance tests run against. Nothing here is transcribed by hand. The provenance section gives the hash of the document it came from.

draft-07 is the earliest draft moqtap supports, so there is no previous draft here to compare it with. Start at draft-08 to follow the changes forward.

The application MAY use any error message and SHOULD use a relevant code, as defined below:

Code Reason Normalized name Defined in
0x0 No Error NO_ERROR §3.5
0x1 Internal Error INTERNAL_ERROR §3.5
0x2 Unauthorized UNAUTHORIZED §3.5
0x3 Protocol Violation PROTOCOL_VIOLATION §3.5
0x4 Duplicate Track Alias DUPLICATE_TRACK_ALIAS §3.5
0x5 Parameter Length Mismatch PARAMETER_LENGTH_MISMATCH §3.5
0x6 Too Many Subscribes TOO_MANY_SUBSCRIBES §3.5
0x10 GOAWAY Timeout GOAWAY_TIMEOUT §3.5

8 code points from table-1 of draft-07 (§3.5. Termination).

The application SHOULD use a relevant error code in SUBSCRIBE_ERROR, as defined below:

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §5.1
0x1 Invalid Range INVALID_RANGE §5.1
0x2 Retry Track Alias RETRY_TRACK_ALIAS §5.1
0x3 Track Does Not Exist TRACK_DOES_NOT_EXIST §5.1
0x4 Unauthorized UNAUTHORIZED §5.1
0x5 Timeout TIMEOUT §5.1

6 code points from table-2 of draft-07 (§5.1. Subscriber Interactions).

The application SHOULD use a relevant status code in SUBSCRIBE_DONE, as defined below:

Code Reason Normalized name Defined in
0x0 Unsubscribed UNSUBSCRIBED §5.1
0x1 Internal Error INTERNAL_ERROR §5.1
0x2 Unauthorized UNAUTHORIZED §5.1
0x3 Track Ended TRACK_ENDED §5.1
0x4 Subscription Ended SUBSCRIPTION_ENDED §5.1
0x5 Going Away GOING_AWAY §5.1
0x6 Expired EXPIRED §5.1

7 code points from table-3 of draft-07 (§5.1. Subscriber Interactions).

Object Status is a second family of code points and is counted on its own. It is the status a single Object carries, not the outcome of a request or a session, so its 5 values are never added to the 21 above. In draft-07 it has no IANA registry — the same code points are assigned as prose in the section that defines the field.

Code Name Description
0x0 NORMAL
0x1 OBJECT_DOES_NOT_EXIST
0x3 END_OF_GROUP
0x4 END_OF_TRACK_AND_GROUP
0x5 END_OF_SUBGROUP

Payload rule: Any object with a status code other than zero MUST have an empty payload.

The code points, names and registry membership come from crates/moqtap-codec/tools/registries/draft-07.json, a committed extraction of draft-ietf-moq-transport-07 produced by crates/moqtap-codec/tools/extract-registries.py. The moqtap Rust codec's conformance tests read that same file and compare it against the crate's enums in both directions, so a code point this page shows and the codec refuses is a test failure, not a documentation drift.

That extraction records source_sha256, the SHA-256 of the rendered draft as bytes on disk: 53eb52578fca0c2415fff80678a9d2def9dfc47bb5c2c669c1c1313584ba3aa5. The descriptions and section links on this page are read from spec-sources/draft-07.html in this site's repository, whose hash matches — the two inputs are provably the same document.

Read draft-07 section by section, or go to the draft-07 control message types.

moqtap covers drafts 07 through 20.

All MoQT error codes, draft by draft · Control message types