use neqo_common::qwarn; use nss::Error as CryptoError; use thiserror::Error;
mod ackrate; #[cfg(fuzzing)] pubmod addr_valid; #[cfg(not(fuzzing))] mod addr_valid; mod cc; mod cid; mod connection; mod crypto; pubmod ecn; mod events; mod fc; #[cfg(fuzzing)] pubmod frame; #[cfg(not(fuzzing))] mod frame; mod pace; #[cfg(any(fuzzing, feature = "bench"))] pubmod packet; #[cfg(not(any(fuzzing, feature = "bench")))] mod packet; mod path; mod pmtud; mod qlog; mod quic_datagrams; #[cfg(feature = "bench")] pubmod recovery; #[cfg(not(feature = "bench"))] mod recovery; pubmod recv_stream; mod rtt; mod saved; mod scone; pubmod send_stream; mod sender; pubmod server; mod sni; mod stateless_reset; mod stats; pubmod stream_id; pubmod streams; pubmod tparams; mod tracking; pubmod version;
// All internal errors from here. Please keep these sorted. #[error("packet acknowledged but never sent")]
AckedUnsentPacket, #[error("connection ID limit exceeded")]
ConnectionIdLimitExceeded, #[error("connection IDs exhausted")]
ConnectionIdsExhausted, #[error("invalid connection state")]
ConnectionState, #[error("decryption error")]
Decrypt, #[error("disabled version")]
DisabledVersion, #[error("no packets received for longer than the idle timeout")]
IdleTimeout, #[error("integer overflow")]
IntegerOverflow, #[error("invalid input")]
InvalidInput, #[error("invalid migration")]
InvalidMigration, #[error("an invalid packet was dropped (internal use only)")]
InvalidPacket, #[error("invalid resumption token")]
InvalidResumptionToken, #[error("invalid retry packet dropped (internal use only)")]
InvalidRetry, #[error("invalid stream ID")]
InvalidStreamId, #[error("keys discarded for epoch {0:?}")]
KeysDiscarded(crypto::Epoch), /// Packet protection keys are exhausted. Also used when too many key /// updates have happened. #[error("keys exhausted")]
KeysExhausted, /// Packet protection keys aren't available yet for the identified space. #[error("keys pending for epoch {0:?} (internal use only)")]
KeysPending(crypto::Epoch), /// An attempt to update keys can be blocked if a packet sent with the /// current keys hasn't been acknowledged. #[error("key update blocked")]
KeyUpdateBlocked, #[error("no available path")]
NoAvailablePath, #[error("no more data")]
NoMoreData, #[error("not available")]
NotAvailable, #[error("not connected")]
NotConnected, #[error("packet number overlap")]
PacketNumberOverlap, #[error("peer application error: 0x{0:x}")]
PeerApplication(AppError), #[error("peer error: {0}")]
Peer(TransportError), #[error("stateless reset")]
StatelessReset, #[error("too much data")]
TooMuchData, #[error("unexpected message")]
UnexpectedMessage, #[error("unknown connection ID")]
UnknownConnectionId, #[error("unknown frame type")]
UnknownFrameType, #[error("version negotiation")]
VersionNegotiation, #[error("wrong role")]
WrongRole, #[error("unknown transport parameter (internal use only)")]
UnknownTransportParameter,
}
impl Error { #[must_use] pubfn code(&self) -> TransportError { matchself { Self::None | Self::IdleTimeout | Self::Peer(_) | Self::PeerApplication(_) => 0, Self::ConnectionRefused => 2, Self::FlowControl => 3, Self::StreamLimit => 4, Self::StreamState => 5, Self::FinalSize => 6, Self::FrameEncoding => 7, Self::TransportParameter => 8, Self::ProtocolViolation => 10, Self::InvalidToken => 11, Self::KeysExhausted => ERROR_AEAD_LIMIT_REACHED, Self::Application => ERROR_APPLICATION_CLOSE, Self::NoAvailablePath => 16, Self::CryptoBufferExceeded => ERROR_CRYPTO_BUFFER_EXCEEDED, Self::CryptoAlert(a) => 0x100 + u64::from(*a), // As we have a special error code for ECH fallbacks, we lose the alert. // Send the server "ech_required" directly. Self::EchRetry(_) => 0x100 + 121, Self::VersionNegotiation => 0x53f8, // All the rest are internal errors.
_ => 1,
}
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.