diff --git a/SteamTransport/Server.cs b/SteamTransport/Server.cs index 4facab67..45dd9212 100644 --- a/SteamTransport/Server.cs +++ b/SteamTransport/Server.cs @@ -2,6 +2,7 @@ using Steamworks; using System; using System.Collections.Generic; +using System.Linq; namespace SteamTransport; @@ -102,7 +103,8 @@ public class Server { var ppOutMessages = new IntPtr[Util.MaxMessages]; - foreach (var conn in _conns) + // receive can result in disconnect, which modifies the collection. we must copy + foreach (var conn in _conns.ToList()) { var numMessages = SteamNetworkingSockets.ReceiveMessagesOnConnection(conn, ppOutMessages, ppOutMessages.Length); for (var i = 0; i < numMessages; i++)