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:
parent
14cd2a4d9c
commit
f7a812439b
1 changed files with 12 additions and 1 deletions
|
|
@ -399,6 +399,7 @@ impl TorrentStateLive {
|
||||||
// TODO: bump counters for incoming
|
// TODO: bump counters for incoming
|
||||||
let handler = PeerHandler {
|
let handler = PeerHandler {
|
||||||
addr: checked_peer.addr,
|
addr: checked_peer.addr,
|
||||||
|
incoming: true,
|
||||||
on_bitfield_notify: Default::default(),
|
on_bitfield_notify: Default::default(),
|
||||||
unchoke_notify: Default::default(),
|
unchoke_notify: Default::default(),
|
||||||
locked: RwLock::new(PeerHandlerLocked { i_am_choked: true }),
|
locked: RwLock::new(PeerHandlerLocked { i_am_choked: true }),
|
||||||
|
|
@ -463,6 +464,7 @@ impl TorrentStateLive {
|
||||||
|
|
||||||
let handler = PeerHandler {
|
let handler = PeerHandler {
|
||||||
addr,
|
addr,
|
||||||
|
incoming: false,
|
||||||
on_bitfield_notify: Default::default(),
|
on_bitfield_notify: Default::default(),
|
||||||
unchoke_notify: Default::default(),
|
unchoke_notify: Default::default(),
|
||||||
locked: RwLock::new(PeerHandlerLocked { i_am_choked: true }),
|
locked: RwLock::new(PeerHandlerLocked { i_am_choked: true }),
|
||||||
|
|
@ -818,7 +820,7 @@ struct PeerHandler {
|
||||||
requests_sem: Semaphore,
|
requests_sem: Semaphore,
|
||||||
|
|
||||||
addr: SocketAddr,
|
addr: SocketAddr,
|
||||||
|
incoming: bool,
|
||||||
tx: PeerTx,
|
tx: PeerTx,
|
||||||
|
|
||||||
first_message_received: AtomicBool,
|
first_message_received: AtomicBool,
|
||||||
|
|
@ -1018,6 +1020,15 @@ impl PeerHandler {
|
||||||
|
|
||||||
pe.value_mut().state.set(PeerState::Dead, &pstats);
|
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();
|
let backoff = pe.value_mut().stats.backoff.next_backoff();
|
||||||
|
|
||||||
// Prevent deadlocks.
|
// Prevent deadlocks.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue