use std::time::Duration;
use crate::{bans::BAN_DURATION_LONG, peer_manager::NodeId};
#[derive(Debug, Clone, thiserror::Error)]
pub enum PeerValidatorError {
#[error("Peer signature was invalid for peer '{peer}'")]
InvalidPeerSignature { peer: NodeId },
#[error("One or more peer addresses were invalid for '{peer}'")]
InvalidPeerAddresses { peer: NodeId },
#[error("Peer '{peer}' has no address claims")]
PeerHasNoAddresses { peer: NodeId },
#[error("Invalid multiaddr: {0}")]
InvalidMultiaddr(String),
#[error("Onion v2 is deprecated and not supported")]
OnionV2NotSupported,
#[error("Peer provided too many supported protocols: expected max {max} but got {length}")]
PeerIdentityTooManyProtocols { length: usize, max: usize },
#[error("Peer provided too many addresses: expected max {max} but got {length}")]
PeerIdentityTooManyAddresses { length: usize, max: usize },
#[error("Peer provided a protocol id that exceeds the maximum length: expected max {max} but got {length}")]
PeerIdentityProtocolIdTooLong { length: usize, max: usize },
#[error("Peer provided a user agent that exceeds the maximum length: expected max {max} but got {length}")]
PeerIdentityUserAgentTooLong { length: usize, max: usize },
}
impl PeerValidatorError {
pub fn as_ban_duration(&self) -> Option<Duration> {
Some(BAN_DURATION_LONG)
}
}