#[repr(u64)]pub enum SessionErrorCode {
NoError = 0,
InternalError = 1,
Unauthorized = 2,
ProtocolViolation = 3,
DuplicateTrackAlias = 4,
ParameterLengthMismatch = 5,
TooManySubscribes = 6,
GoawayTimeout = 16,
ControlMessageTimeout = 17,
DataStreamTimeout = 18,
}Expand description
Session termination codes, from draft-09 Section 3.5 (Termination).
The draft introduces the table with “The application MAY use any error
message and SHOULD use a relevant code, as defined below”. These codes
travel in the QUIC CONNECTION_CLOSE frame or the WebTransport
CLOSE_WEBTRANSPORT_SESSION capsule.
Section 3.5 assigns 0x0 through 0x6 and then jumps to 0x10 through 0x12 for
the three timeouts; 0x7 through 0xF are unassigned. The gap is the draft’s
own, so GOAWAY Timeout is 0x10 and not 0x7.
Variants§
NoError = 0
No Error — The session is being terminated without an error.
InternalError = 1
Internal Error — An implementation specific error occurred.
Unauthorized — The endpoint breached an agreement, which MAY have been
pre-negotiated by the application.
ProtocolViolation = 3
Protocol Violation — The remote endpoint performed an action that was
disallowed by the specification.
DuplicateTrackAlias = 4
Duplicate Track Alias — The endpoint attempted to use a Track Alias
that was already in use.
ParameterLengthMismatch = 5
Parameter Length Mismatch — the Section 3.5 table assigns this code but
the list of descriptions that follows the table skips it. Section 7.1
supplies the meaning: if a receiver understands a parameter type, and the
parameter length implied by that type does not match the Parameter Length
field, the receiver MUST terminate the session with this code.
TooManySubscribes = 6
Too Many Subscribes — The session was closed because the subscriber
used a Subscribe ID equal or larger than the current Maximum Subscribe
ID.
GoawayTimeout = 16
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).
ControlMessageTimeout = 17
Control Message Timeout — The session was closed because the peer took
too long to respond to a control message.
DataStreamTimeout = 18
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.
Implementations§
Source§impl SessionErrorCode
impl SessionErrorCode
Sourcepub const ALL: &[SessionErrorCode]
pub const ALL: &[SessionErrorCode]
Every session termination code draft-09 assigns, in ascending wire order.
This is the set Self::from_u64 accepts, written out so that it can
be enumerated: nothing can iterate an enum’s variants, so a caller that
wants the registry has to be handed it. Writing it down is also what
lets a test state its claims about the registry itself rather than about
the range some sweep happens to reach.
Trait Implementations§
Source§impl Clone for SessionErrorCode
impl Clone for SessionErrorCode
Source§fn clone(&self) -> SessionErrorCode
fn clone(&self) -> SessionErrorCode
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more