From c2568ebd1f75a6553572bbca1c52a00fe4d28d3c Mon Sep 17 00:00:00 2001 From: RoosterDragon Date: Wed, 15 Nov 2023 19:32:44 +0000 Subject: [PATCH] Fix CA1851 --- .../ServerTraits/LobbyCommands.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs index 8a8097f151..a07fb331a2 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs @@ -1294,10 +1294,13 @@ namespace OpenRA.Mods.Common.Server else return; - var unknownMaps = server.MapPool.Where(server.MapIsUnknown); - if (server.Settings.QueryMapRepository && unknownMaps.Any()) + var unknownMaps = server.MapPool.Where(server.MapIsUnknown).ToList(); + if (unknownMaps.Count == 0) + return; + + if (server.Settings.QueryMapRepository) { - Log.Write("server", $"Querying Resource Center for information on {unknownMaps.Count()} maps..."); + Log.Write("server", $"Querying Resource Center for information on {unknownMaps.Count} maps..."); // Query any missing maps and wait up to 10 seconds for a response // Maps that have not resolved will not be valid for the initial map choice @@ -1306,12 +1309,17 @@ namespace OpenRA.Mods.Common.Server var searchingMaps = server.MapPool.Where(uid => mapCache[uid].Status == MapStatus.Searching); var stopwatch = Stopwatch.StartNew(); + + // Each time we check, some map statuses may have updated. +#pragma warning disable CA1851 // Possible multiple enumerations of 'IEnumerable' collection while (searchingMaps.Any() && stopwatch.ElapsedMilliseconds < 10000) Thread.Sleep(100); +#pragma warning restore CA1851 } - if (unknownMaps.Any()) - Log.Write("server", "Failed to resolve maps: " + unknownMaps.JoinWith(", ")); + var stillUnknownMaps = server.MapPool.Where(server.MapIsUnknown).ToList(); + if (stillUnknownMaps.Count != 0) + Log.Write("server", "Failed to resolve maps: " + stillUnknownMaps.JoinWith(", ")); } static string ChooseInitialMap(S server)