perf(net): backoff on IO error (#633)

This commit is contained in:
Matthias Seitz
2022-12-28 12:43:02 +01:00
committed by GitHub
parent d4d8a8c882
commit 1ba81191f6
2 changed files with 17 additions and 9 deletions

View File

@ -26,6 +26,14 @@ impl EthStreamError {
None
}
}
/// Returns the [io::Error] if it was caused by IO
pub fn as_io(&self) -> Option<&io::Error> {
if let EthStreamError::P2PStreamError(P2PStreamError::Io(io)) = self {
return Some(io)
}
None
}
}
impl From<io::Error> for EthStreamError {

View File

@ -95,15 +95,15 @@ impl SessionError for EthStreamError {
EthStreamError::P2PStreamError(P2PStreamError::HandshakeError(
P2PHandshakeError::NoResponse
))
) || self
.as_disconnected()
.map(|reason| {
matches!(
reason,
DisconnectReason::TooManyPeers | DisconnectReason::AlreadyConnected
)
})
.unwrap_or_default()
) || self.as_io().is_some() ||
self.as_disconnected()
.map(|reason| {
matches!(
reason,
DisconnectReason::TooManyPeers | DisconnectReason::AlreadyConnected
)
})
.unwrap_or_default()
}
}