pub struct ProxyError { /* private fields */ }Expand description
A request failed because the proxy failed, not the evonode: the proxy is unreachable, broke the SOCKS5 protocol, refused the credentials, or answered with a general failure or an unsupported command. It is carried in the source chain of the transport error; see TransportError::is_proxy_failure.
Such a failure is not retried and does not ban the evonode: every endpoint shares the proxy. That includes a general failure, which Tor also sends when a single circuit fails; the request fails at once rather than being retried on another node without a ban, and the next request (with Socks5Auth::RandomPerConnection, on a fresh circuit) tries again.
A reply about the destination (unreachable, refused, TTL expired, not allowed by the proxy’s rules, address type not supported) produces an ordinary, retryable connection error instead, as does the connect timeout once the proxy has completed the SOCKS5 negotiation (the CONNECT reply is pending): a proxy that holds its reply while it builds the route (Tor does while bootstrapping) cannot be told apart from a slow node, and Dash Core counts it against the peer too. A proxy that does not accept the TCP connection, or does not finish the SOCKS5 negotiation (method selection and any authentication), within five seconds or the connect budget, whichever is shorter, is the proxy’s failure: that is a proxy that is stuck (a suspended Tor), not a route being built.
Trait Implementations§
Source§impl Debug for ProxyError
impl Debug for ProxyError
Source§impl Display for ProxyError
impl Display for ProxyError
Source§impl Error for ProxyError
impl Error for ProxyError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Auto Trait Implementations§
impl !RefUnwindSafe for ProxyError
impl !UnwindSafe for ProxyError
impl Freeze for ProxyError
impl Send for ProxyError
impl Sync for ProxyError
impl Unpin for ProxyError
impl UnsafeUnpin for ProxyError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T, U> IntoPlatformVersioned<U> for Twhere
U: FromPlatformVersioned<T>,
impl<T, U> IntoPlatformVersioned<U> for Twhere
U: FromPlatformVersioned<T>,
§fn into_platform_versioned(self, platform_version: &PlatformVersion) -> U
fn into_platform_versioned(self, platform_version: &PlatformVersion) -> U
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].