diff --git a/SocketEngine/AsyncSocketServer.cs b/SocketEngine/AsyncSocketServer.cs index a87a10fd0..5a06211ca 100644 --- a/SocketEngine/AsyncSocketServer.cs +++ b/SocketEngine/AsyncSocketServer.cs @@ -102,14 +102,25 @@ private IAppSession ProcessNewClient(Socket client, SslProtocols security) } ISocketSession socketSession; + IAppSession session=null; + try + { + if (security == SslProtocols.None) + socketSession = new AsyncSocketSession(client, socketEventArgsProxy); + else + socketSession = new AsyncStreamSocketSession(client, security, socketEventArgsProxy); - if (security == SslProtocols.None) - socketSession = new AsyncSocketSession(client, socketEventArgsProxy); - else - socketSession = new AsyncStreamSocketSession(client, security, socketEventArgsProxy); - - var session = CreateSession(client, socketSession); - + session = CreateSession(client, socketSession); + } + catch + { + socketEventArgsProxy.Reset(); + this.m_ReadWritePool.Push(socketEventArgsProxy); + AppServer.AsyncRun(client.SafeClose); + return null; + } + + if (session == null) { socketEventArgsProxy.Reset();