diff --git a/p2p/src/peers.rs b/p2p/src/peers.rs index 449ae355b7..8926220936 100644 --- a/p2p/src/peers.rs +++ b/p2p/src/peers.rs @@ -513,7 +513,13 @@ impl Peers { } pub fn enough_peers(&self) -> bool { - self.connected_peers().len() >= self.config.peer_min_preferred_count() as usize + self.peer_count() >= self.config.peer_min_preferred_count() + } + + /// We have enough peers, both total connected and outbound connected + pub fn healthy_peers_mix(&self) -> bool { + self.enough_peers() + && self.peer_outbound_count() >= self.config.peer_min_preferred_count() / 2 } /// Removes those peers that seem to have expired diff --git a/servers/src/grin/seed.rs b/servers/src/grin/seed.rs index 5af7df96eb..6561210fbb 100644 --- a/servers/src/grin/seed.rs +++ b/servers/src/grin/seed.rs @@ -186,10 +186,7 @@ fn monitor_peers( // maintenance step first, clean up p2p server peers peers.clean_peers(config.peer_max_count() as usize); - // We have enough peers, both total connected and outbound connected so we are good. - if peers.peer_count() >= config.peer_min_preferred_count() - && peers.peer_outbound_count() >= config.peer_min_preferred_count() / 2 - { + if peers.healthy_peers_mix() { return; } @@ -318,7 +315,7 @@ fn listen_for_addrs( let addrs: Vec = rx.try_iter().collect(); // If we have a healthy number of outbound peers then we are done here. - if peers.peer_outbound_count() >= p2p.config.peer_min_preferred_count() / 2 { + if peers.healthy_peers_mix() { return; }