From 90a823b3edb8db584233276e4b1a8c8badb109d4 Mon Sep 17 00:00:00 2001 From: Ivan Date: Sat, 9 Nov 2024 11:42:48 +0100 Subject: [PATCH] Small fixes base on comments in PR #261 --- crates/librqbit/src/torrent_state/live/mod.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/crates/librqbit/src/torrent_state/live/mod.rs b/crates/librqbit/src/torrent_state/live/mod.rs index 408d3b9..4b1806c 100644 --- a/crates/librqbit/src/torrent_state/live/mod.rs +++ b/crates/librqbit/src/torrent_state/live/mod.rs @@ -884,7 +884,7 @@ impl TorrentStateLive { None } }) - .take(50) + .take(MAX_SENT_PEERS) .collect::>(); let addrs_closed_to_sent = sent_peers_live @@ -905,16 +905,23 @@ impl TorrentStateLive { // and addrs_closed_to_sent are only filtered addresses from sent_peers_live if !addrs_live_to_sent.is_empty() || !addrs_closed_to_sent.is_empty() { - debug!("sending PEX with {} live ({:?})and {} closed peers", addrs_live_to_sent.len(), addrs_live_to_sent,addrs_closed_to_sent.len()); + debug!( + "sending PEX with {} live ({:?})and {} closed peers", + addrs_live_to_sent.len(), + addrs_live_to_sent, + addrs_closed_to_sent.len() + ); let pex_msg = extended::ut_pex::UtPex::from_addrs(&addrs_live_to_sent, &addrs_closed_to_sent); let ext_msg = extended::ExtendedMessage::UtPex(pex_msg); let msg = Message::Extended(ext_msg); - if tx.send(WriterRequest::Message(msg)).is_ok() { - sent_peers_live.extend(&addrs_live_to_sent); - sent_peers_live.retain(|addr| !addrs_closed_to_sent.contains(addr)); + if tx.send(WriterRequest::Message(msg)).is_err() { + return Ok(()); // Peer disconnected } + + sent_peers_live.extend(&addrs_live_to_sent); + sent_peers_live.retain(|addr| !addrs_closed_to_sent.contains(addr)); } } } @@ -1859,7 +1866,6 @@ impl PeerHandler { B: AsRef<[u8]> + std::fmt::Debug, { // TODO: this is just first attempt at pex - will need more sophistication on adding peers - BEP 40, check number of live, seen peers ... - debug!("received PEX message with {} added peers and {} dropped peers", msg.added_peers().count(), msg.dropped_peers().count()); msg.dropped_peers() .chain(msg.added_peers()) .for_each(|peer| {