chore: initial sanitized public snapshot
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
use super::{Display, Formatter};
|
||||
|
||||
/// Errors raised while parsing tracker announce, scrape, or UDP payloads.
|
||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||
pub enum TrackerParseError {
|
||||
/// The tracker bencode payload was malformed.
|
||||
InvalidBencode(String),
|
||||
/// A required field was missing from the payload.
|
||||
MissingField(&'static str),
|
||||
/// A hex-encoded value was malformed.
|
||||
InvalidHex(String),
|
||||
/// A peer entry was malformed.
|
||||
InvalidPeer(String),
|
||||
/// A UDP tracker packet was malformed.
|
||||
InvalidUdpPacket(String),
|
||||
/// A UDP tracker action code was unknown.
|
||||
InvalidUdpAction(u32),
|
||||
/// The response transaction identifier differed from the request identifier.
|
||||
TransactionIdMismatch {
|
||||
/// Transaction identifier the caller expected to receive.
|
||||
expected: u32,
|
||||
/// Transaction identifier that was actually received.
|
||||
actual: u32,
|
||||
},
|
||||
}
|
||||
|
||||
impl Display for TrackerParseError {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Self::InvalidBencode(reason) => write!(f, "invalid tracker bencode: {reason}"),
|
||||
Self::MissingField(field) => write!(f, "missing tracker field: {field}"),
|
||||
Self::InvalidHex(value) => write!(f, "invalid hex string: {value}"),
|
||||
Self::InvalidPeer(reason) => write!(f, "invalid peer entry: {reason}"),
|
||||
Self::InvalidUdpPacket(reason) => write!(f, "invalid udp tracker packet: {reason}"),
|
||||
Self::InvalidUdpAction(action) => write!(f, "invalid udp tracker action id: {action}"),
|
||||
Self::TransactionIdMismatch { expected, actual } => write!(
|
||||
f,
|
||||
"udp tracker transaction id mismatch: expected {expected}, got {actual}"
|
||||
),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for TrackerParseError {}
|
||||
Reference in New Issue
Block a user