From ca1237667fce7951378daf89a65987b84b48d729 Mon Sep 17 00:00:00 2001 From: tycho garen Date: Tue, 14 Jun 2022 16:15:20 -0400 Subject: [PATCH] actually shuffle peers more --- internal/p2p/peermanager.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/p2p/peermanager.go b/internal/p2p/peermanager.go index ad9547cef..46ed052a1 100644 --- a/internal/p2p/peermanager.go +++ b/internal/p2p/peermanager.go @@ -876,6 +876,7 @@ func (m *PeerManager) Advertise(peerID types.NodeID, limit uint16) []NodeAddress addresses = append(addresses, m.options.SelfAddress) } +OUTER: for _, peer := range m.store.Ranked() { if peer.ID == peerID { continue @@ -885,8 +886,8 @@ func (m *PeerManager) Advertise(peerID types.NodeID, limit uint16) []NodeAddress } for nodeAddr, addressInfo := range peer.AddressInfo { - if len(addresses) >= int(limit) { - return addresses + if len(addresses) >= int(limit)*2 { + break OUTER } // only add non-private NodeIDs @@ -895,6 +896,7 @@ func (m *PeerManager) Advertise(peerID types.NodeID, limit uint16) []NodeAddress } } } + rand.Shuffle(len(addresses), func(i, j int) { addresses[i], addresses[j] = addresses[j], addresses[i] })