From fca9e7f9ce141c089b447cfabdc229bd09e9864b Mon Sep 17 00:00:00 2001 From: Ethan Buchman Date: Sat, 11 Jul 2015 02:00:05 +0000 Subject: [PATCH] send pexRequest to random peer in ensurePeers if no addrs to dial --- p2p/pex_reactor.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/p2p/pex_reactor.go b/p2p/pex_reactor.go index abe25b7b1..b00f2cee1 100644 --- a/p2p/pex_reactor.go +++ b/p2p/pex_reactor.go @@ -210,8 +210,13 @@ func (pexR *PEXReactor) ensurePeers() { }(item.(*NetAddress)) } - // TODO: if no addresses to dial, we should send a pexRequest to a random peer - // so we can get more peers + // if no addresses to dial, pick a random connected peer and ask for more peers + if toDial.Size() == 0 { + peers := pexR.sw.Peers().List() + i := rand.Int() % len(peers) + log.Debug("No addresses to dial. Sending pexRequest to random peer", "peer", peers[i]) + pexR.RequestPEX(peers[i]) + } } // implements events.Eventable