From c30050396a6e4396fe8e18fe85ad3aaa44891bb3 Mon Sep 17 00:00:00 2001 From: geckosoft Date: Mon, 1 Nov 2010 05:14:41 +0100 Subject: [PATCH] Fixed: Possible crash --- OpenRA.Game/Server/Server.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index fea6012abc..f889a17df9 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -211,13 +211,30 @@ namespace OpenRA.Server static void AcceptConnection() { - var newConn = new Connection { socket = listener.AcceptSocket() }; + Socket newSocket = null; + + try + { + if (!listener.Server.IsBound) return; + newSocket = listener.AcceptSocket(); + }catch + { + /* could have an exception here when listener 'goes away' when calling AcceptConnection! */ + /* alternative would be to use locking but the listener doesnt go away without a reason */ + return; + } + + + var newConn = new Connection { socket = newSocket }; + + if (Game.Settings.Server.Extension != null && !Game.Settings.Server.Extension.OnValidateConnection(GameStarted, newConn)) { DropClient(newConn, new Exception() ); return; } + try { if (GameStarted)