From 8c9fa3f44891f32cd75ebfc29b18893cfab8e12a Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Sat, 23 Sep 2023 16:59:05 -0400 Subject: [PATCH] put exclusive lock on the peers list; --- FneMaster.cs | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/FneMaster.cs b/FneMaster.cs index ddb4cf8..57bfc30 100644 --- a/FneMaster.cs +++ b/FneMaster.cs @@ -1136,24 +1136,27 @@ namespace fnecore CancellationToken ct = maintainenceCancelToken.Token; while (!abortListening) { - // check to see if any peers have been quiet (no ping) longer than allowed - List peersToRemove = new List(); - foreach (KeyValuePair kvp in peers) + lock (peers) { - uint peerId = kvp.Key; - PeerInformation peer = kvp.Value; - - DateTime dt = peer.LastPing.AddSeconds(PingTime * MaxMissed); - if (dt < DateTime.Now) + // check to see if any peers have been quiet (no ping) longer than allowed + List peersToRemove = new List(); + foreach (KeyValuePair kvp in peers) { - Log(LogLevel.INFO, $"({systemName}) PEER {peerId} has timed out"); - peersToRemove.Add(peerId); + uint peerId = kvp.Key; + PeerInformation peer = kvp.Value; + + DateTime dt = peer.LastPing.AddSeconds(PingTime * MaxMissed); + if (dt < DateTime.Now) + { + Log(LogLevel.INFO, $"({systemName}) PEER {peerId} has timed out"); + peersToRemove.Add(peerId); + } } - } - // remove any peers - foreach (uint peerId in peersToRemove) - peers.Remove(peerId); + // remove any peers + foreach (uint peerId in peersToRemove) + peers.Remove(peerId); + } try {