MoQT draft-14 Error Codes
MoQT draft-14 assigns 73 code points across 8 registries — Session Termination, SUBSCRIBE_ERROR, PUBLISH_DONE, PUBLISH_ERROR, FETCH_ERROR, ANNOUNCE_ERROR, SUBSCRIBE_NAMESPACE_ERROR and Data Stream Reset — plus 4 Object Status values, which are a separate family and are never counted with the rest. Of the 73, 73 are assignments and 0 are reserved.
Every row below was read out of draft-ietf-moq-transport-14 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-13
Section titled “What changed since draft-13”Added
0x19INVALID_AUTHORITY(Session Termination)0x1AMALFORMED_AUTHORITY(Session Termination)0x0INTERNAL_ERROR(PUBLISH_DONE)0x1UNAUTHORIZED(PUBLISH_DONE)0x2TRACK_ENDED(PUBLISH_DONE)0x3SUBSCRIPTION_ENDED(PUBLISH_DONE)0x4GOING_AWAY(PUBLISH_DONE)0x5EXPIRED(PUBLISH_DONE)0x6TOO_FAR_BEHIND(PUBLISH_DONE)0x7MALFORMED_TRACK(PUBLISH_DONE)
Removed
0x0INTERNAL_ERROR(SUBSCRIBE_DONE)0x1UNAUTHORIZED(SUBSCRIBE_DONE)0x2TRACK_ENDED(SUBSCRIBE_DONE)0x3SUBSCRIPTION_ENDED(SUBSCRIBE_DONE)0x4GOING_AWAY(SUBSCRIBE_DONE)0x5EXPIRED(SUBSCRIBE_DONE)0x6TOO_FAR_BEHIND(SUBSCRIBE_DONE)0x7MALFORMED_TRACK(SUBSCRIBE_DONE)
draft-14 adds the PUBLISH_DONE Codes registry. It drops the SUBSCRIBE_DONE registry that draft-13 had.
Session Termination Error Codes
Section titled “Session Termination Error Codes”draft-14 registers 21 code points in §13.1.1, and defines each one in §3.4.
| Code | Name | Description | Defined in |
|---|---|---|---|
0x0 | NO_ERROR | The session is being terminated without an error. | §3.4 |
0x1 | INTERNAL_ERROR | An implementation specific error occurred. | §3.4 |
0x2 | UNAUTHORIZED | The client is not authorized to establish a session. | §3.4 |
0x3 | PROTOCOL_VIOLATION | The remote endpoint performed an action that was disallowed by the specification. | §3.4 |
0x4 | INVALID_REQUEST_ID | The session was closed because the endpoint used a Request ID that was smaller than or equal to a previously received request ID, or the least- significant bit of the request ID was incorrect for the endpoint. | §3.4 |
0x5 | DUPLICATE_TRACK_ALIAS | The endpoint attempted to use a Track Alias that was already in use. | §3.4 |
0x6 | KEY_VALUE_FORMATTING_ERROR | The key-value pair has a formatting error. | §3.4 |
0x7 | TOO_MANY_REQUESTS | The session was closed because the endpoint used a Request ID equal to or larger than the current Maximum Request ID. | §3.4 |
0x8 | INVALID_PATH | The PATH parameter was used by a server, on a WebTransport session, or the server does not support the path. | §3.4 |
0x9 | MALFORMED_PATH | The PATH parameter does not conform to the rules in Section 9.3.2.2. | §3.4 |
0x10 | GOAWAY_TIMEOUT | The session was closed because the peer took too long to close the session in response to a GOAWAY (Section 9.4) message. See session migration (Section 3.5). | §3.4 |
0x11 | CONTROL_MESSAGE_TIMEOUT | The session was closed because the peer took too long to respond to a control message. | §3.4 |
0x12 | DATA_STREAM_TIMEOUT | The session was closed because the peer took too long to send data expected on an open Data Stream (see Section 10). 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. | §3.4 |
0x13 | AUTH_TOKEN_CACHE_OVERFLOW | The Session limit Section 9.3.2.4 of the size of all registered Authorization tokens has been exceeded. | §3.4 |
0x14 | DUPLICATE_AUTH_TOKEN_ALIAS | Authorization Token attempted to register an Alias that was in use (see Section 9.2.1.1). | §3.4 |
0x15 | VERSION_NEGOTIATION_FAILED | The client didn't offer a version supported by the server. | §3.4 |
0x16 | MALFORMED_AUTH_TOKEN | Invalid Auth Token serialization during registration (see Section 9.2.1.1). | §3.4 |
0x17 | UNKNOWN_AUTH_TOKEN_ALIAS | No registered token found for the provided Alias (see Section 9.2.1.1). | §3.4 |
0x18 | EXPIRED_AUTH_TOKEN | Authorization token has expired (Section 9.2.1.1). | §3.4 |
0x19 | INVALID_AUTHORITY | The specified AUTHORITY does not correspond to this server or cannot be used in this context. | §3.4 |
0x1A | MALFORMED_AUTHORITY | The AUTHORITY value is syntactically invalid. | §3.4 |
21 code points from table-8 of draft-14 (§13.1.1. Session Termination Error Codes).
SUBSCRIBE_ERROR Codes
Section titled “SUBSCRIBE_ERROR Codes”draft-14 registers 8 code points in §13.1.2, and defines each one in §9.9.
| Code | Name | Description | Defined in |
|---|---|---|---|
0x0 | INTERNAL_ERROR | An implementation specific or generic error occurred. | §9.9 |
0x1 | UNAUTHORIZED | The subscriber is not authorized to subscribe to the given track. | §9.9 |
0x2 | TIMEOUT | The subscription could not be completed before an implementation specific timeout. For example, a relay could not establish an upstream subscription within the timeout. | §9.9 |
0x3 | NOT_SUPPORTED | The endpoint does not support the SUBSCRIBE method. | §9.9 |
0x4 | TRACK_DOES_NOT_EXIST | The requested track is not available at the publisher. | §9.9 |
0x5 | INVALID_RANGE | The end of the SUBSCRIBE range is earlier than the beginning, or the end of the range has already been published. | §9.9 |
0x10 | MALFORMED_AUTH_TOKEN | Invalid Auth Token serialization during registration (see Section 9.2.1.1). | §9.9 |
0x12 | EXPIRED_AUTH_TOKEN | Authorization token has expired (Section 9.2.1.1). | §9.9 |
8 code points from table-9 of draft-14 (§13.1.2. SUBSCRIBE_ERROR Codes).
PUBLISH_DONE Codes
Section titled “PUBLISH_DONE Codes”draft-14 registers 8 code points in §13.1.3, and defines each one in §9.12.
| Code | Name | Description | Defined in |
|---|---|---|---|
0x0 | INTERNAL_ERROR | An implementation specific or generic error occurred. | §9.12 |
0x1 | UNAUTHORIZED | The subscriber is no longer authorized to subscribe to the given track. | §9.12 |
0x2 | TRACK_ENDED | The track is no longer being published. | §9.12 |
0x3 | SUBSCRIPTION_ENDED | The publisher reached the end of an associated Subscribe filter. | §9.12 |
0x4 | GOING_AWAY | The subscriber or publisher issued a GOAWAY message. | §9.12 |
0x5 | EXPIRED | The publisher reached the timeout specified in SUBSCRIBE_OK. | §9.12 |
0x6 | TOO_FAR_BEHIND | The publisher's queue of objects to be sent to the given subscriber exceeds its implementation defined limit. | §9.12 |
0x7 | MALFORMED_TRACK | A relay publisher detected the track was malformed (see Section 2.5). | §9.12 |
8 code points from table-10 of draft-14 (§13.1.3. PUBLISH_DONE Codes).
PUBLISH_ERROR Codes
Section titled “PUBLISH_ERROR Codes”draft-14 registers 5 code points in §13.1.4, and defines each one in §9.15.
| Code | Name | Description | Defined in |
|---|---|---|---|
0x0 | INTERNAL_ERROR | An implementation specific or generic error occurred. | §9.15 |
0x1 | UNAUTHORIZED | The publisher is not authorized to publish the given namespace or track. | §9.15 |
0x2 | TIMEOUT | The subscription could not be established before an implementation specific timeout. | §9.15 |
0x3 | NOT_SUPPORTED | The endpoint does not support the PUBLISH method. | §9.15 |
0x4 | UNINTERESTED | The namespace or track is not of interest to the endpoint. | §9.15 |
5 code points from table-11 of draft-14 (§13.1.4. PUBLISH_ERROR Codes).
FETCH_ERROR Codes
Section titled “FETCH_ERROR Codes”draft-14 registers 12 code points in §13.1.5, and defines each one in §9.18.
| Code | Name | Description | Defined in |
|---|---|---|---|
0x0 | INTERNAL_ERROR | An implementation specific or generic error occurred. | §9.18 |
0x1 | UNAUTHORIZED | The subscriber is not authorized to fetch from the given track. | §9.18 |
0x2 | TIMEOUT | The fetch could not be completed before an implementation specific timeout. For example, a relay could not FETCH missing objects within the timeout. | §9.18 |
0x3 | NOT_SUPPORTED | The endpoint does not support the FETCH method. | §9.18 |
0x4 | TRACK_DOES_NOT_EXIST | The requested track is not available at the publisher. | §9.18 |
0x5 | INVALID_RANGE | The end of the requested range is earlier than the beginning, the start of the requested range is beyond the Largest Location, or the track has not published any Objects yet. | §9.18 |
0x6 | NO_OBJECTS | No Objects exist between the requested Start and End Locations. | §9.18 |
0x7 | INVALID_JOINING_REQUEST_ID | The joining Fetch referenced a Request ID that did not belong to an active Subscription. | §9.18 |
0x8 | UNKNOWN_STATUS_IN_RANGE | The requested range contains objects with unknown status. | §9.18 |
0x9 | MALFORMED_TRACK | A relay publisher detected the track was malformed (see Section 2.5). | §9.18 |
0x10 | MALFORMED_AUTH_TOKEN | Invalid Auth Token serialization during registration (see Section 9.2.1.1). | §9.18 |
0x12 | EXPIRED_AUTH_TOKEN | Authorization token has expired (Section 9.2.1.1). | §9.18 |
12 code points from table-12 of draft-14 (§13.1.5. FETCH_ERROR Codes).
ANNOUNCE_ERROR Codes
Section titled “ANNOUNCE_ERROR Codes”draft-14 registers 7 code points in §13.1.6, and defines each one in §9.25.
| Code | Name | Description | Defined in |
|---|---|---|---|
0x0 | INTERNAL_ERROR | An implementation specific or generic error occurred. | §9.25 |
0x1 | UNAUTHORIZED | The subscriber is not authorized to announce the given namespace. | §9.25 |
0x2 | TIMEOUT | The announce could not be completed before an implementation specific timeout. | §9.25 |
0x3 | NOT_SUPPORTED | The endpoint does not support the PUBLISH_NAMESPACE method. | §9.25 |
0x4 | UNINTERESTED | The namespace is not of interest to the endpoint. | §9.25 |
0x10 | MALFORMED_AUTH_TOKEN | Invalid Auth Token serialization during registration (see Section 9.2.1.1). | §9.25 |
0x12 | EXPIRED_AUTH_TOKEN | Authorization token has expired (Section 9.2.1.1). | §9.25 |
7 code points from table-13 of draft-14 (§13.1.6. ANNOUNCE_ERROR Codes).
SUBSCRIBE_NAMESPACE_ERROR Codes
Section titled “SUBSCRIBE_NAMESPACE_ERROR Codes”draft-14 registers 8 code points in §13.1.7, and defines each one in §9.30.
| Code | Name | Description | Defined in |
|---|---|---|---|
0x0 | INTERNAL_ERROR | An implementation specific or generic error occurred. | §9.30 |
0x1 | UNAUTHORIZED | The subscriber is not authorized to subscribe to the given namespace prefix. | §9.30 |
0x2 | TIMEOUT | The operation could not be completed before an implementation specific timeout. | §9.30 |
0x3 | NOT_SUPPORTED | The endpoint does not support the SUBSCRIBE_NAMESPACE method. | §9.30 |
0x4 | NAMESPACE_PREFIX_UNKNOWN | The namespace prefix is not available for subscription. | §9.30 |
0x5 | NAMESPACE_PREFIX_OVERLAP | The namespace prefix overlaps with another SUBSCRIBE_NAMESPACE in the same session. | §9.30 |
0x10 | MALFORMED_AUTH_TOKEN | Invalid Auth Token serialization during registration (see Section 9.2.1.1). | §9.30 |
0x12 | EXPIRED_AUTH_TOKEN | Authorization token has expired (Section 9.2.1.1). | §9.30 |
8 code points from table-14 of draft-14 (§13.1.7. SUBSCRIBE_NAMESPACE_ERROR Codes).
Data Stream Reset Error Codes
Section titled “Data Stream Reset Error Codes”draft-14 registers 4 code points in §13.1.8, and defines each one in §10.4.3.
| Code | Name | Description | Defined in |
|---|---|---|---|
0x0 | INTERNAL_ERROR | An implementation specific error. | §10.4.3 |
0x1 | CANCELLED | The subscriber requested cancellation via UNSUBSCRIBE, FETCH_CANCEL or STOP_SENDING, or the publisher ended the subscription, in which case PUBLISH_DONE (Section 9.12) will have a more detailed status code. | §10.4.3 |
0x2 | DELIVERY_TIMEOUT | The DELIVERY TIMEOUT Section 9.2.1.2 was exceeded for this stream. | §10.4.3 |
0x3 | SESSION_CLOSED | The publisher session is being closed. | §10.4.3 |
4 code points from table-15 of draft-14 (§13.1.8. Data Stream Reset Error Codes).
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 73 above. In draft-14 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-14.json, a committed extraction of
draft-ietf-moq-transport-14
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: 1bd3bcf31ffd57226c022637cf09be9dddce670d33af2f8d1d4d2055e4131911. The descriptions and section links on this page are
read from spec-sources/draft-14.html in this site's repository, whose hash matches — the two inputs are provably the same document.
Read draft-14 section by section, or go to the draft-14 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