From a51f3a996bc067ad60b7e290fe1bcf333967c9d2 Mon Sep 17 00:00:00 2001 From: Yahtoo Ma Date: Thu, 12 Apr 2018 14:24:24 +0800 Subject: [PATCH] Filter connected nodes --- p2p/pex_reactor.go | 2 +- p2p/switch.go | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/p2p/pex_reactor.go b/p2p/pex_reactor.go index b5c66836..3db22e36 100644 --- a/p2p/pex_reactor.go +++ b/p2p/pex_reactor.go @@ -268,7 +268,7 @@ func (r *PEXReactor) ensurePeers() { alreadyDialing := r.Switch.IsDialing(try) var alreadyConnected bool for _, v := range r.Switch.Peers().list { - if strings.Compare(v.mconn.RemoteAddress.String(), try.String()) == 0 { + if strings.Compare(v.mconn.RemoteAddress.IP.String(), try.IP.String()) == 0 { alreadyConnected = true break } diff --git a/p2p/switch.go b/p2p/switch.go index 462aa651..58e18578 100644 --- a/p2p/switch.go +++ b/p2p/switch.go @@ -16,6 +16,7 @@ import ( cfg "github.com/bytom/config" "github.com/bytom/errors" "github.com/bytom/p2p/trust" + "strings" ) const ( @@ -362,7 +363,11 @@ func (sw *Switch) DialPeerWithAddress(addr *NetAddress, persistent bool) (*Peer, if err := sw.checkBannedPeer(addr.IP.String()); err != nil { return nil, err } - + for _, v := range sw.Peers().list { + if strings.Compare(v.mconn.RemoteAddress.IP.String(), addr.IP.String()) == 0 { + return nil, errors.New("Peer is connected") + } + } sw.dialing.Set(addr.IP.String(), addr) defer sw.dialing.Delete(addr.IP.String()) -- 2.11.0