diff --git a/internal/p2p/peermanager.go b/internal/p2p/peermanager.go index ad2aae5c5..1adaee82e 100644 --- a/internal/p2p/peermanager.go +++ b/internal/p2p/peermanager.go @@ -890,7 +890,7 @@ OUTER: return addresses } - return addresses[:limit-1] + return addresses[:limit] } // PeerEventSubscriber describes the type of the subscription method, to assist diff --git a/internal/p2p/peermanager_test.go b/internal/p2p/peermanager_test.go index 7aa535670..0c8c55be9 100644 --- a/internal/p2p/peermanager_test.go +++ b/internal/p2p/peermanager_test.go @@ -1851,10 +1851,18 @@ func TestPeerManager_Advertise(t *testing.T) { // Asking for 0 addresses should return, well, 0. require.Empty(t, peerManager.Advertise(aID, 0)) - // Asking for 2 addresses should get the highest-rated ones, i.e. a. - require.ElementsMatch(t, []p2p.NodeAddress{ - aTCP, aMem, - }, peerManager.Advertise(dID, 2)) + // Asking for 2 addresses should get two addresses + // the content of the list when there are two + addrs := peerManager.Advertise(dID, 2) + require.Len(t, addrs, 2) + for _, addr := range addrs { + if dID == addr.NodeID { + t.Fatal("never advertise self") + } + if cID == addr.NodeID { + t.Fatal("should not have returned the lowest ranked peer") + } + } } func TestPeerManager_Advertise_Self(t *testing.T) {