diff --git a/p2p/pex/addrbook.go b/p2p/pex/addrbook.go index 3bf331172..15019f5cd 100644 --- a/p2p/pex/addrbook.go +++ b/p2p/pex/addrbook.go @@ -60,7 +60,9 @@ type AddrBook interface { // Mark address MarkGood(p2p.ID) MarkAttempt(*p2p.NetAddress) - MarkBad(*p2p.NetAddress) + MarkBad(*p2p.NetAddress) // Move peer to bad peers list + // Add bad peers back to addrBook + ReinstateBadPeers() IsGood(*p2p.NetAddress) bool @@ -236,7 +238,6 @@ func (a *addrBook) HasAddress(addr *p2p.NetAddress) bool { // NeedMoreAddrs implements AddrBook - returns true if there are not have enough addresses in the book. func (a *addrBook) NeedMoreAddrs() bool { - a.ReinstateBadPeers() return a.Size() < needAddressThreshold } diff --git a/p2p/pex/pex_reactor.go b/p2p/pex/pex_reactor.go index 3a3d2d7de..66ec77503 100644 --- a/p2p/pex/pex_reactor.go +++ b/p2p/pex/pex_reactor.go @@ -8,7 +8,7 @@ import ( "github.com/pkg/errors" - amino "github.com/tendermint/go-amino" + "github.com/tendermint/go-amino" "github.com/tendermint/tendermint/libs/cmap" tmmath "github.com/tendermint/tendermint/libs/math" "github.com/tendermint/tendermint/libs/rand" @@ -494,6 +494,8 @@ func (r *Reactor) ensurePeers() { } if r.book.NeedMoreAddrs() { + // 0) Check if banned nodes can be reinstated + r.book.ReinstateBadPeers() // 1) Pick a random peer and ask for more. peers := r.Switch.Peers().List() peersCount := len(peers)