MoQT draft-11 Error Codes
MoQT draft-11 assigns 65 code points across 7 registries — Termination, SUBSCRIBE_ERROR, SUBSCRIBE_DONE, FETCH_ERROR, ANNOUNCE_ERROR, SUBSCRIBE_ANNOUNCES_ERROR and Closing Subgroup Streams — plus 4 Object Status values, which are a separate family and are never counted with the rest. Of the 65, 65 are assignments and 0 are reserved.
Every row below was read out of draft-ietf-moq-transport-11 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.
What changed since draft-10
Section titled “What changed since draft-10”Added
0x7TOO_MANY_REQUESTS(Termination)0x8INVALID_PATH(Termination)0x9MALFORMED_PATH(Termination)0x13AUTH_TOKEN_CACHE_OVERFLOW(Termination)0x14DUPLICATE_AUTH_TOKEN_ALIAS(Termination)0x15VERSION_NEGOTIATION_FAILED(Termination)0x10MALFORMED_AUTH_TOKEN(SUBSCRIBE_ERROR)0x11UNKNOWN_AUTH_TOKEN_ALIAS(SUBSCRIBE_ERROR)0x12EXPIRED_AUTH_TOKEN(SUBSCRIBE_ERROR)0x6NO_OBJECTS(FETCH_ERROR)0x7INVALID_JOINING_SUBSCRIBE_ID(FETCH_ERROR)0x10MALFORMED_AUTH_TOKEN(FETCH_ERROR)0x11UNKNOWN_AUTH_TOKEN_ALIAS(FETCH_ERROR)0x12EXPIRED_AUTH_TOKEN(FETCH_ERROR)0x10MALFORMED_AUTH_TOKEN(ANNOUNCE_ERROR)0x11UNKNOWN_AUTH_TOKEN_ALIAS(ANNOUNCE_ERROR)0x12EXPIRED_AUTH_TOKEN(ANNOUNCE_ERROR)0x5NAMESPACE_PREFIX_OVERLAP(SUBSCRIBE_ANNOUNCES_ERROR)0x10MALFORMED_AUTH_TOKEN(SUBSCRIBE_ANNOUNCES_ERROR)0x11UNKNOWN_AUTH_TOKEN_ALIAS(SUBSCRIBE_ANNOUNCES_ERROR)0x12EXPIRED_AUTH_TOKEN(SUBSCRIBE_ANNOUNCES_ERROR)0x0INTERNAL_ERROR(Closing Subgroup Streams)0x1CANCELLED(Closing Subgroup Streams)0x2DELIVERY_TIMEOUT(Closing Subgroup Streams)0x3SESSION_CLOSED(Closing Subgroup Streams)
Renamed
0x4INVALID_REQUEST_ID— wasDUPLICATE_TRACK_ALIASin draft-10 (Termination)0x5DUPLICATE_TRACK_ALIAS— wasPARAMETER_LENGTH_MISMATCHin draft-10 (Termination)0x6KEY_VALUE_FORMATTING_ERROR— wasTOO_MANY_SUBSCRIBESin draft-10 (Termination)
draft-11 adds the Closing Subgroup Streams registry.
Termination
Section titled “Termination”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.4 |
0x1 | Internal Error | INTERNAL_ERROR | §3.4 |
0x2 | Unauthorized | UNAUTHORIZED | §3.4 |
0x3 | Protocol Violation | PROTOCOL_VIOLATION | §3.4 |
0x4 | Invalid Request ID | INVALID_REQUEST_ID | §3.4 |
0x5 | Duplicate Track Alias | DUPLICATE_TRACK_ALIAS | §3.4 |
0x6 | Key-Value Formatting Error | KEY_VALUE_FORMATTING_ERROR | §3.4 |
0x7 | Too Many Requests | TOO_MANY_REQUESTS | §3.4 |
0x8 | Invalid Path | INVALID_PATH | §3.4 |
0x9 | Malformed Path | MALFORMED_PATH | §3.4 |
0x10 | GOAWAY Timeout | GOAWAY_TIMEOUT | §3.4 |
0x11 | Control Message Timeout | CONTROL_MESSAGE_TIMEOUT | §3.4 |
0x12 | Data Stream Timeout | DATA_STREAM_TIMEOUT | §3.4 |
0x13 | Auth Token Cache Overflow | AUTH_TOKEN_CACHE_OVERFLOW | §3.4 |
0x14 | Duplicate Auth Token Alias | DUPLICATE_AUTH_TOKEN_ALIAS | §3.4 |
0x15 | Version Negotiation Failed | VERSION_NEGOTIATION_FAILED | §3.4 |
16 code points from table-1 of draft-11 (§3.4. Termination).
SUBSCRIBE_ERROR
Section titled “SUBSCRIBE_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 | §8.9 |
0x1 | Unauthorized | UNAUTHORIZED | §8.9 |
0x2 | Timeout | TIMEOUT | §8.9 |
0x3 | Not Supported | NOT_SUPPORTED | §8.9 |
0x4 | Track Does Not Exist | TRACK_DOES_NOT_EXIST | §8.9 |
0x5 | Invalid Range | INVALID_RANGE | §8.9 |
0x6 | Retry Track Alias | RETRY_TRACK_ALIAS | §8.9 |
0x10 | Malformed Auth Token | MALFORMED_AUTH_TOKEN | §8.9 |
0x11 | Unknown Auth Token Alias | UNKNOWN_AUTH_TOKEN_ALIAS | §8.9 |
0x12 | Expired Auth Token | EXPIRED_AUTH_TOKEN | §8.9 |
10 code points from table-4 of draft-11 (§8.9. SUBSCRIBE_ERROR).
SUBSCRIBE_DONE
Section titled “SUBSCRIBE_DONE”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 | §8.12 |
0x1 | Unauthorized | UNAUTHORIZED | §8.12 |
0x2 | Track Ended | TRACK_ENDED | §8.12 |
0x3 | Subscription Ended | SUBSCRIPTION_ENDED | §8.12 |
0x4 | Going Away | GOING_AWAY | §8.12 |
0x5 | Expired | EXPIRED | §8.12 |
0x6 | Too Far Behind | TOO_FAR_BEHIND | §8.12 |
7 code points from table-5 of draft-11 (§8.12. SUBSCRIBE_DONE).
FETCH_ERROR
Section titled “FETCH_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 | §8.15 |
0x1 | Unauthorized | UNAUTHORIZED | §8.15 |
0x2 | Timeout | TIMEOUT | §8.15 |
0x3 | Not Supported | NOT_SUPPORTED | §8.15 |
0x4 | Track Does Not Exist | TRACK_DOES_NOT_EXIST | §8.15 |
0x5 | Invalid Range | INVALID_RANGE | §8.15 |
0x6 | No Objects | NO_OBJECTS | §8.15 |
0x7 | Invalid Joining Subscribe ID | INVALID_JOINING_SUBSCRIBE_ID | §8.15 |
0x10 | Malformed Auth Token | MALFORMED_AUTH_TOKEN | §8.15 |
0x11 | Unknown Auth Token Alias | UNKNOWN_AUTH_TOKEN_ALIAS | §8.15 |
0x12 | Expired Auth Token | EXPIRED_AUTH_TOKEN | §8.15 |
11 code points from table-6 of draft-11 (§8.15. FETCH_ERROR).
ANNOUNCE_ERROR
Section titled “ANNOUNCE_ERROR”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 | §8.21 |
0x1 | Unauthorized | UNAUTHORIZED | §8.21 |
0x2 | Timeout | TIMEOUT | §8.21 |
0x3 | Not Supported | NOT_SUPPORTED | §8.21 |
0x4 | Uninterested | UNINTERESTED | §8.21 |
0x10 | Malformed Auth Token | MALFORMED_AUTH_TOKEN | §8.21 |
0x11 | Unknown Auth Token Alias | UNKNOWN_AUTH_TOKEN_ALIAS | §8.21 |
0x12 | Expired Auth Token | EXPIRED_AUTH_TOKEN | §8.21 |
8 code points from table-7 of draft-11 (§8.21. ANNOUNCE_ERROR).
SUBSCRIBE_ANNOUNCES_ERROR
Section titled “SUBSCRIBE_ANNOUNCES_ERROR”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 | §8.26 |
0x1 | Unauthorized | UNAUTHORIZED | §8.26 |
0x2 | Timeout | TIMEOUT | §8.26 |
0x3 | Not Supported | NOT_SUPPORTED | §8.26 |
0x4 | Namespace Prefix Unknown | NAMESPACE_PREFIX_UNKNOWN | §8.26 |
0x5 | Namespace Prefix Overlap | NAMESPACE_PREFIX_OVERLAP | §8.26 |
0x10 | Malformed Auth Token | MALFORMED_AUTH_TOKEN | §8.26 |
0x11 | Unknown Auth Token Alias | UNKNOWN_AUTH_TOKEN_ALIAS | §8.26 |
0x12 | Expired Auth Token | EXPIRED_AUTH_TOKEN | §8.26 |
9 code points from table-8 of draft-11 (§8.26. SUBSCRIBE_ANNOUNCES_ERROR).
Closing Subgroup Streams
Section titled “Closing Subgroup Streams”The application SHOULD use a relevant error code in RESET_STREAM or RESET_STREAM_AT, as defined below:
| Code | Reason | Normalized name | Defined in |
|---|---|---|---|
0x0 | Internal Error | INTERNAL_ERROR | §9.4.3 |
0x1 | Cancelled | CANCELLED | §9.4.3 |
0x2 | Delivery Timeout | DELIVERY_TIMEOUT | §9.4.3 |
0x3 | Session Closed | SESSION_CLOSED | §9.4.3 |
4 code points from table-12 of draft-11 (§9.4.3. Closing Subgroup Streams).
Object Status
Section titled “Object Status”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 4 values are never added to the 65 above. In draft-11 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 | — |
Payload rule: Any object with a status code other than zero MUST have an empty payload.
Where these numbers come from
Section titled “Where these numbers come from”
The code points, names and registry membership come from
crates/moqtap-codec/tools/registries/draft-11.json, a committed extraction of
draft-ietf-moq-transport-11
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: 1dcacf7964c1f2124ec11a85c9bb2fbe7e02b39491c82b3699571a60c45a07b2. The descriptions and section links on this page are
read from spec-sources/draft-11.html in this site's repository, whose hash matches — the two inputs are provably the same document.
Read draft-11 section by section, or go to the draft-11 control message types.
Error codes in other drafts
Section titled “Error codes in other drafts”moqtap covers drafts 07 through 20.
- draft-20 — 61 codes
- draft-19 — 64 codes
- draft-18 — 62 codes
- draft-17 — 59 codes
- draft-16 — 49 codes
- draft-15 — 47 codes
- draft-14 — 73 codes
- draft-13 — 71 codes
- draft-12 — 71 codes
- draft-11 — 65 codes
- draft-10 — 40 codes
- draft-09 — 40 codes
- draft-08 — 40 codes
- draft-07 — 21 codes
All MoQT error codes, draft by draft · Control message types