#[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-10, Section 3.4 “Termination”).
Sent in the QUIC CONNECTION_CLOSE frame, or in the CLOSE_WEBTRANSPORT_SESSION capsule when WebTransport is used. The draft states the application MAY use any error message and SHOULD use a relevant code from this table.
The table assigns 0x0 through 0x6 and then jumps to 0x10. Draft-10 declares
no reserved range over 0x7 to 0xF, so those values are simply unassigned and
from_u64 rejects them.
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 — Section 3.4 lists this code but does not
describe it; Section 8.1 requires a receiver that understands a
parameter type to terminate the session with this code when the length
implied by that type does not match the Parameter Length field.
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 message (Section 8.3).
Section 3.5 adds that a server SHOULD terminate the session with this
code after a sufficient timeout if there are still open subscriptions or
fetches on the connection.
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. This includes fields
of a stream header or an object header within a data stream. An endpoint
that times out waiting for a new object header on an open subgroup
stream 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-10 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