From 425fd73090245a4e559236fa6020e5ad026ede93 Mon Sep 17 00:00:00 2001 From: Luchuan Date: Thu, 7 Nov 2019 11:26:06 +0800 Subject: [PATCH] Fix p2p filter unconnected peers (#1160) --- neo/Network/P2P/LocalNode.cs | 3 ++- neo/Network/P2P/Peer.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/neo/Network/P2P/LocalNode.cs b/neo/Network/P2P/LocalNode.cs index 79ad7fb096..0efd8a3287 100644 --- a/neo/Network/P2P/LocalNode.cs +++ b/neo/Network/P2P/LocalNode.cs @@ -20,6 +20,7 @@ internal class RelayDirectly { public IInventory Inventory; } internal class SendDirectly { public IInventory Inventory; } public const uint ProtocolVersion = 0; + private const int MaxCountFromSeedList = 5; private static readonly object lockObj = new object(); private readonly NeoSystem system; @@ -123,7 +124,7 @@ public IEnumerable GetUnconnectedPeers() protected override void NeedMorePeers(int count) { - count = Math.Max(count, 5); + count = Math.Max(count, MaxCountFromSeedList); if (ConnectedPeers.Count > 0) { BroadcastMessage(MessageCommand.GetAddr); diff --git a/neo/Network/P2P/Peer.cs b/neo/Network/P2P/Peer.cs index 0cbd6cbaff..0665567fc8 100644 --- a/neo/Network/P2P/Peer.cs +++ b/neo/Network/P2P/Peer.cs @@ -66,7 +66,7 @@ protected void AddPeers(IEnumerable peers) { if (UnconnectedPeers.Count < UnconnectedMax) { - peers = peers.Where(p => p.Port != ListenerTcpPort || !localAddresses.Contains(p.Address)); + peers = peers.Where(p => (p.Port != ListenerTcpPort || !localAddresses.Contains(p.Address)) && !ConnectedPeers.Values.Contains(p)); ImmutableInterlocked.Update(ref UnconnectedPeers, p => p.Union(peers)); } }