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 5).
The application MAY use any error message and SHOULD use a relevant code, as defined below:
| Code | Reason |
|---|---|
| 0x0 | No Error |
| 0x1 | Internal Error |
| 0x2 | Unauthorized |
| 0x3 | Protocol Violation |
| 0x4 | Duplicate Track Alias |
| 0x5 | Parameter Length Mismatch |
| 0x6 | Too Many Subscribes |
| 0x10 | GOAWAY Timeout |
| 0x11 | Control Message Timeout |
| 0x12 | Data Stream Timeout |
-
No Error: The session is being terminated without an error.
-
Internal Error: An implementation specific error occurred.
-
Unauthorized: The endpoint breached an agreement, which MAY have been pre-negotiated by the application.
-
Protocol Violation: The remote endpoint performed an action that was disallowed by the specification.
-
Duplicate Track Alias: The endpoint attempted to use a Track Alias that was already in use.
-
Too Many Subscribes: The session was closed because the subscriber used a Subscribe ID equal or larger than the current Maximum Subscribe ID.
-
GOAWAY Timeout: The session was closed because the peer took too long to close the session in response to a GOAWAY (Section 7.3) message. See session migration (Section 3.6).
-
Control Message Timeout: The session was closed because the peer took too long to respond to a control message.
-
Data Stream Timeout: The session was closed because the peer took too long to send data expected on an open Data Stream Section 8. 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, terminate the subscription, or close the session with an error.