Change to restarting of dead peers (#239)

* Logging died peers

* Ignore incoming for retry,  cancel retries after download is complete

* Remove cancel

* Add incoming flag to PeerHandler

* Cleaning up, plus debug

* Fix debug style
This commit is contained in:
Ivan Zderadicka 2024-09-22 09:31:57 +02:00 committed by GitHub
parent 14cd2a4d9c
commit f7a812439b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -399,6 +399,7 @@ impl TorrentStateLive {
// TODO: bump counters for incoming
let handler = PeerHandler {
addr: checked_peer.addr,
incoming: true,
on_bitfield_notify: Default::default(),
unchoke_notify: Default::default(),
locked: RwLock::new(PeerHandlerLocked { i_am_choked: true }),
@ -463,6 +464,7 @@ impl TorrentStateLive {
let handler = PeerHandler {
addr,
incoming: false,
on_bitfield_notify: Default::default(),
unchoke_notify: Default::default(),
locked: RwLock::new(PeerHandlerLocked { i_am_choked: true }),
@ -818,7 +820,7 @@ struct PeerHandler {
requests_sem: Semaphore,
addr: SocketAddr,
incoming: bool,
tx: PeerTx,
first_message_received: AtomicBool,
@ -1018,6 +1020,15 @@ impl PeerHandler {
pe.value_mut().state.set(PeerState::Dead, &pstats);
if self.incoming {
// do not retry incoming peers
debug!(
peer = handle.to_string(),
"incoming peer died, not re-queueing"
);
return Ok(());
}
let backoff = pe.value_mut().stats.backoff.next_backoff();
// Prevent deadlocks.