From 236fe56f606161eb95d16e52c26594f81e620680 Mon Sep 17 00:00:00 2001 From: Antioch Peverell Date: Tue, 13 Nov 2018 10:59:33 +0000 Subject: [PATCH] ask for peers with PEER_LIST capability when asking for more peers (#1969) do not simply look for peers with the same capabilities we have --- p2p/src/peer.rs | 2 +- servers/src/grin/seed.rs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/p2p/src/peer.rs b/p2p/src/peer.rs index b833602d0..98763f291 100644 --- a/p2p/src/peer.rs +++ b/p2p/src/peer.rs @@ -395,7 +395,7 @@ impl Peer { } pub fn send_peer_request(&self, capab: Capabilities) -> Result<(), Error> { - trace!("Asking {} for more peers.", self.info.addr); + trace!("Asking {} for more peers {:?}", self.info.addr, capab); self.connection.as_ref().unwrap().lock().send( &GetPeerAddrs { capabilities: capab, diff --git a/servers/src/grin/seed.rs b/servers/src/grin/seed.rs index f1b668708..d1e6ee9e1 100644 --- a/servers/src/grin/seed.rs +++ b/servers/src/grin/seed.rs @@ -89,7 +89,6 @@ pub fn connect_and_monitor( monitor_peers( peers.clone(), p2p_server.config.clone(), - capabilities, tx.clone(), preferred_peers.clone(), ); @@ -116,7 +115,6 @@ pub fn connect_and_monitor( fn monitor_peers( peers: Arc, config: p2p::P2PConfig, - capabilities: p2p::Capabilities, tx: mpsc::Sender, preferred_peers_list: Option>, ) { @@ -178,7 +176,7 @@ fn monitor_peers( config.port, p.info.addr, ); - let _ = p.send_peer_request(capabilities); + let _ = p.send_peer_request(p2p::Capabilities::PEER_LIST); connected_peers.push(p.info.addr) } @@ -212,6 +210,7 @@ fn monitor_peers( p2p::Capabilities::UNKNOWN, config.peer_max_count() as usize, ); + for p in new_peers.iter().filter(|p| !peers.is_known(&p.addr)) { trace!( "monitor_peers: on {}:{}, queue to soon try {}", @@ -249,7 +248,8 @@ fn connect_to_seeds_and_preferred_peers( peers_preferred_list: Option>, ) { // check if we have some peers in db - let peers = peers.find_peers(p2p::State::Healthy, p2p::Capabilities::FULL_NODE, 100); + // look for peers that are able to give us other peers (via PEER_LIST capability) + let peers = peers.find_peers(p2p::State::Healthy, p2p::Capabilities::PEER_LIST, 100); // if so, get their addresses, otherwise use our seeds let mut peer_addrs = if peers.len() > 3 {