From b41f0bdbd45b7570e43d86eb805547231e7bf241 Mon Sep 17 00:00:00 2001 From: ardocrat Date: Wed, 22 Apr 2026 11:11:20 +0300 Subject: [PATCH] p2p: ignore last connection attempt when there is not enough outbound peers --- servers/src/grin/seed.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/servers/src/grin/seed.rs b/servers/src/grin/seed.rs index ecc496f1..ac00949d 100644 --- a/servers/src/grin/seed.rs +++ b/servers/src/grin/seed.rs @@ -194,7 +194,8 @@ fn monitor_peers(peers: Arc, config: p2p::P2PConfig, tx: mpsc::Sende return; } - if !peers.enough_outbound_peers() { + let enough_outbound = peers.enough_outbound_peers(); + if !enough_outbound { // loop over connected peers that can provide peer lists // ask them for their list of peers let mut connected_peers: Vec = vec![]; @@ -239,7 +240,7 @@ fn monitor_peers(peers: Arc, config: p2p::P2PConfig, tx: mpsc::Sende .iter() .filter(|p| { peers.get_connected_peer(p.addr).is_none() - && Utc::now().timestamp() - p.last_attempt >= max_attempt_delay + && (enough_outbound && Utc::now().timestamp() - p.last_attempt >= max_attempt_delay) }) .choose_multiple(&mut thread_rng(), max_peer_attempts / 2) { @@ -268,7 +269,7 @@ fn monitor_peers(peers: Arc, config: p2p::P2PConfig, tx: mpsc::Sende // check min 32 (max 128, if there are no healthy and unknown) random defunct peers no more often than 1 hour per peer. for dp in defuncts .iter() - .filter(|p| Utc::now().timestamp() - p.last_attempt >= max_attempt_delay) + .filter(|p| enough_outbound && Utc::now().timestamp() - p.last_attempt >= max_attempt_delay) .choose_multiple(&mut thread_rng(), max_peer_attempts - new_peers.len()) { new_peers.push(&dp.addr);