From dc012c0faf8418478f0ded94c34aa09359244bd8 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 30 Dec 2010 20:29:11 +1300 Subject: [PATCH] Fix server shutdown crash under mono. --- OpenRA.Game/Server/Server.cs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index ce8e9f6799..f08ff0497f 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -38,15 +38,10 @@ namespace OpenRA.Server public ModData ModData; public Map Map; + bool shutdown = false; public void Shutdown() { - conns.Clear(); - GameStarted = false; - foreach (var t in ServerTraits.WithInterface()) - t.ServerShutdown(this); - - try { listener.Stop(); } - catch { } + shutdown = true; } public Server(ModData modData, Settings settings, string map) @@ -103,13 +98,17 @@ namespace OpenRA.Server foreach (var t in ServerTraits.WithInterface()) t.Tick(this); - if (conns.Count() == 0) - { - listener.Stop(); - GameStarted = false; + if (conns.Count() == 0 || shutdown) break; - } } + + GameStarted = false; + foreach (var t in ServerTraits.WithInterface()) + t.ServerShutdown(this); + + conns.Clear(); + try { listener.Stop(); } + catch { } } ) { IsBackground = true }.Start(); }