#[repr(u64)]pub enum SessionErrorCode {
NoError = 0,
InternalError = 1,
Unauthorized = 2,
ProtocolViolation = 3,
DuplicateTrackAlias = 4,
ParameterLengthMismatch = 5,
TooManySubscribes = 6,
GoawayTimeout = 16,
}Expand description
Session termination codes, from draft-07 section 3.5 “Termination” (Table 1).
The draft introduces the table with: “The application MAY use any error message and SHOULD use a relevant code, as defined below”. These are the codes carried in the QUIC CONNECTION_CLOSE frame or the WebTransport CLOSE_WEBTRANSPORT_SESSION capsule.
Section 3.5 continues past the table with a list defining the codes. That list
has seven entries for eight rows: it skips Parameter Length Mismatch, whose
rule appears in section 6.1 instead. Each variant below gives the Reason text
followed by that definition.
The jump from 0x6 to 0x10 is the draft’s own; 0x7 through 0xF are unassigned.
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 one code section 3.5 lists in its table
but omits from the definitions that follow it. Section 6.1 supplies the
rule: 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.
Section 6.20 states the same rule from the publisher’s side, for any
message carrying such a Subscribe ID rather than SUBSCRIBE alone.
GoawayTimeout = 16
GOAWAY Timeout — the session was closed because the client took too long
to close the session in response to a GOAWAY message (section 6.3). See
session migration, section 3.6.
Implementations§
Source§impl SessionErrorCode
impl SessionErrorCode
Sourcepub const ALL: &[SessionErrorCode]
pub const ALL: &[SessionErrorCode]
Every session termination code draft-07 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