Skip to content

MoQT draft-08 Error Codes

MoQT draft-08 assigns 40 code points across 6 registries — Termination, ANNOUNCE_ERROR, SUBSCRIBE_ERROR, FETCH_ERROR, SUBSCRIBE_DONE and SUBSCRIBE_ANNOUNCES_ERROR — plus 5 Object Status values, which are a separate family and are never counted with the rest. Of the 40, 40 are assignments and 0 are reserved.

Every row below was read out of draft-ietf-moq-transport-08 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.

Added

  • 0x11 CONTROL_MESSAGE_TIMEOUT (Termination)
  • 0x12 DATA_STREAM_TIMEOUT (Termination)
  • 0x0 INTERNAL_ERROR (ANNOUNCE_ERROR)
  • 0x1 UNAUTHORIZED (ANNOUNCE_ERROR)
  • 0x2 TIMEOUT (ANNOUNCE_ERROR)
  • 0x3 NOT_SUPPORTED (ANNOUNCE_ERROR)
  • 0x4 UNINTERESTED (ANNOUNCE_ERROR)
  • 0x0 INTERNAL_ERROR (FETCH_ERROR)
  • 0x1 UNAUTHORIZED (FETCH_ERROR)
  • 0x2 TIMEOUT (FETCH_ERROR)
  • 0x3 NOT_SUPPORTED (FETCH_ERROR)
  • 0x4 TRACK_DOES_NOT_EXIST (FETCH_ERROR)
  • 0x5 INVALID_RANGE (FETCH_ERROR)
  • 0x0 INTERNAL_ERROR (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x1 UNAUTHORIZED (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x2 TIMEOUT (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x3 NOT_SUPPORTED (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x4 NAMESPACE_PREFIX_UNKNOWN (SUBSCRIBE_ANNOUNCES_ERROR)

Renumbered

  • 0x6 RETRY_TRACK_ALIAS — was 0x2 in draft-07 (SUBSCRIBE_ERROR)

Renamed

  • 0x1 UNAUTHORIZED — was INVALID_RANGE in draft-07 (SUBSCRIBE_ERROR)
  • 0x2 TIMEOUT — was RETRY_TRACK_ALIAS in draft-07 (SUBSCRIBE_ERROR)
  • 0x3 NOT_SUPPORTED — was TRACK_DOES_NOT_EXIST in draft-07 (SUBSCRIBE_ERROR)
  • 0x4 TRACK_DOES_NOT_EXIST — was UNAUTHORIZED in draft-07 (SUBSCRIBE_ERROR)
  • 0x5 INVALID_RANGE — was TIMEOUT in draft-07 (SUBSCRIBE_ERROR)
  • 0x0 INTERNAL_ERROR — was UNSUBSCRIBED in draft-07 (SUBSCRIBE_DONE)
  • 0x1 UNAUTHORIZED — was INTERNAL_ERROR in draft-07 (SUBSCRIBE_DONE)
  • 0x2 TRACK_ENDED — was UNAUTHORIZED in draft-07 (SUBSCRIBE_DONE)
  • 0x3 SUBSCRIPTION_ENDED — was TRACK_ENDED in draft-07 (SUBSCRIBE_DONE)
  • 0x4 GOING_AWAY — was SUBSCRIPTION_ENDED in draft-07 (SUBSCRIBE_DONE)
  • 0x5 EXPIRED — was GOING_AWAY in draft-07 (SUBSCRIBE_DONE)
  • 0x6 TOO_FAR_BEHIND — was EXPIRED in draft-07 (SUBSCRIBE_DONE)

draft-08 adds the ANNOUNCE_ERROR, FETCH_ERROR and SUBSCRIBE_ANNOUNCES_ERROR registries.

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
0x11 Control Message Timeout CONTROL_MESSAGE_TIMEOUT §3.5
0x12 Data Stream Timeout DATA_STREAM_TIMEOUT §3.5

10 code points from table-1 of draft-08 (§3.5. Termination).

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

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §7.10
0x1 Unauthorized UNAUTHORIZED §7.10
0x2 Timeout TIMEOUT §7.10
0x3 Not Supported NOT_SUPPORTED §7.10
0x4 Uninterested UNINTERESTED §7.10

5 code points from table-3 of draft-08 (§7.10. ANNOUNCE_ERROR).

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 §7.16
0x1 Unauthorized UNAUTHORIZED §7.16
0x2 Timeout TIMEOUT §7.16
0x3 Not Supported NOT_SUPPORTED §7.16
0x4 Track Does Not Exist TRACK_DOES_NOT_EXIST §7.16
0x5 Invalid Range INVALID_RANGE §7.16
0x6 Retry Track Alias RETRY_TRACK_ALIAS §7.16

7 code points from table-4 of draft-08 (§7.16. SUBSCRIBE_ERROR).

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

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

6 code points from table-5 of draft-08 (§7.18. FETCH_ERROR).

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

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §7.19
0x1 Unauthorized UNAUTHORIZED §7.19
0x2 Track Ended TRACK_ENDED §7.19
0x3 Subscription Ended SUBSCRIPTION_ENDED §7.19
0x4 Going Away GOING_AWAY §7.19
0x5 Expired EXPIRED §7.19
0x6 Too Far Behind TOO_FAR_BEHIND §7.19

7 code points from table-6 of draft-08 (§7.19. SUBSCRIBE_DONE).

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

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §7.26
0x1 Unauthorized UNAUTHORIZED §7.26
0x2 Timeout TIMEOUT §7.26
0x3 Not Supported NOT_SUPPORTED §7.26
0x4 Namespace Prefix Unknown NAMESPACE_PREFIX_UNKNOWN §7.26

5 code points from table-7 of draft-08 (§7.26. SUBSCRIBE_ANNOUNCES_ERROR).

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 40 above. In draft-08 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_TRACK

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-08.json, a committed extraction of draft-ietf-moq-transport-08 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: a9e7a0c224112bff530d6c6027ae1ffbc16c2baae055a87e60de4a46a16e1b1e. The descriptions and section links on this page are read from spec-sources/draft-08.html in this site's repository, whose hash matches — the two inputs are provably the same document.

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

moqtap covers drafts 07 through 20.

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