corevpn_protocol/
error.rs1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, ProtocolError>;
7
8#[derive(Debug, Error)]
10pub enum ProtocolError {
11 #[error("invalid packet: {0}")]
13 InvalidPacket(String),
14
15 #[error("unknown opcode: {0}")]
17 UnknownOpcode(u8),
18
19 #[error("packet too short: expected at least {expected}, got {got}")]
21 PacketTooShort {
22 expected: usize,
24 got: usize,
26 },
27
28 #[error("invalid session ID")]
30 InvalidSessionId,
31
32 #[error("session not found")]
34 SessionNotFound,
35
36 #[error("handshake failed: {0}")]
38 HandshakeFailed(String),
39
40 #[error("TLS error: {0}")]
42 TlsError(String),
43
44 #[error("authentication failed: {0}")]
46 AuthFailed(String),
47
48 #[error("replay attack detected")]
50 ReplayDetected,
51
52 #[error("key not available for key_id {0}")]
54 KeyNotAvailable(u8),
55
56 #[error("crypto error: {0}")]
58 CryptoError(#[from] corevpn_crypto::CryptoError),
59
60 #[error("core error: {0}")]
62 CoreError(#[from] corevpn_core::CoreError),
63
64 #[error("IO error: {0}")]
66 IoError(#[from] std::io::Error),
67
68 #[error("operation timed out")]
70 Timeout,
71
72 #[error("connection reset by peer")]
74 ConnectionReset,
75}