From 191beeeedaea8d72ee09171a0d6dc23c24460c2d Mon Sep 17 00:00:00 2001 From: Swen Mun Date: Thu, 25 Apr 2019 13:54:26 +0900 Subject: [PATCH] Replace outdated peer. --- Libplanet/Net/Swarm.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Libplanet/Net/Swarm.cs b/Libplanet/Net/Swarm.cs index 6a86984d5f..be2d526120 100644 --- a/Libplanet/Net/Swarm.cs +++ b/Libplanet/Net/Swarm.cs @@ -1288,6 +1288,7 @@ CancellationToken cancellationToken if (IsUnknownPeer(sender)) { + _logger.Debug("The sender of delta is unknown."); if (IsDifferentProtocolVersion(sender)) { var args = new DifferentProtocolVersionEventArgs @@ -1336,13 +1337,20 @@ CancellationToken cancellationToken private bool IsUnknownPeer(Peer sender) { - if (_peers.Keys.All(p => !sender.PublicKey.Equals(p.PublicKey))) + Peer existing = _peers.Keys + .FirstOrDefault(p => sender.PublicKey.Equals(p.PublicKey)); + + if (existing is null) { return true; } - if (_dealers.Keys.All(a => !sender.Address.Equals(a))) + if (!existing.EndPoint.Equals(sender.EndPoint)) { + // Clear outdated existing peer. + _peers.Remove(existing); + CloseDealer(existing); + return true; }