#[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 (draft-08, section 3.5 “Termination”).
Carried in the QUIC CONNECTION_CLOSE frame or the WebTransport CLOSE_WEBTRANSPORT_SESSION capsule. The draft assigns 0x0 through 0x6 and 0x10 through 0x12; 0x7 through 0xF are unassigned.
Section 3.5 defines every code in this registry in prose except
Parameter Length Mismatch (0x5), which the table assigns but the prose
list skips; that variant carries the reason phrase alone.
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.
This is a breach of agreement, not a failed authentication or a refused credential.
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
Section 3.5 assigns this code in its table but does not define it in prose, so the reason phrase above is the whole of the draft’s description.
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.
This reports a Subscribe ID above the advertised maximum, not a count of concurrent subscriptions.
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.
Closing the session is only one of the responses the draft permits here. Section 3.5: an endpoint that times out waiting for a new object header on an open subgroup stream MAY send 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-08 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