diff --git a/crates/librqbit/src/torrent_state/mod.rs b/crates/librqbit/src/torrent_state/mod.rs index 91aec07..32246e5 100644 --- a/crates/librqbit/src/torrent_state/mod.rs +++ b/crates/librqbit/src/torrent_state/mod.rs @@ -269,7 +269,7 @@ impl ManagedTorrent { ); }; - fn spawn_peer_adder(live: &Arc, peer_rx: Option) { + fn spawn_peer_adder(live: &Arc, mut peer_rx: PeerStream) { live.spawn( error_span!(parent: live.torrent().span.clone(), "external_peer_adder"), { @@ -281,12 +281,6 @@ impl ManagedTorrent { weak }; - let mut peer_rx = if let Some(peer_rx) = peer_rx { - peer_rx - } else { - return Ok(()); - }; - loop { match timeout(Duration::from_secs(5), peer_rx.next()).await { Ok(Some(peer)) => { @@ -359,7 +353,9 @@ impl ManagedTorrent { t.state_change_notify.notify_waiters(); spawn_fatal_errors_receiver(&t, rx, token); - spawn_peer_adder(&live, peer_rx); + if let Some(peer_rx) = peer_rx { + spawn_peer_adder(&live, peer_rx); + } Ok(()) } @@ -382,7 +378,9 @@ impl ManagedTorrent { drop(g); spawn_fatal_errors_receiver(self, rx, cancellation_token); - spawn_peer_adder(&live, peer_rx); + if let Some(peer_rx) = peer_rx { + spawn_peer_adder(&live, peer_rx); + } Ok(()) } ManagedTorrentState::Error(_) => {