From 59346f550f209331c3a1750cd397480d1a63b004 Mon Sep 17 00:00:00 2001 From: sta Date: Sun, 22 Jan 2017 17:27:37 +0900 Subject: [PATCH] [Modify] Polish it --- websocket-sharp/Server/WebSocketServer.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/websocket-sharp/Server/WebSocketServer.cs b/websocket-sharp/Server/WebSocketServer.cs index 6a17875d..0d9dc305 100644 --- a/websocket-sharp/Server/WebSocketServer.cs +++ b/websocket-sharp/Server/WebSocketServer.cs @@ -797,12 +797,15 @@ namespace WebSocketSharp.Server private void receiveRequest () { while (true) { + TcpClient cl = null; try { - var cl = _listener.AcceptTcpClient (); + cl = _listener.AcceptTcpClient (); ThreadPool.QueueUserWorkItem ( state => { try { - var ctx = cl.GetWebSocketContext (null, _secure, _sslConfigInUse, _logger); + var ctx = + cl.GetWebSocketContext (null, _secure, _sslConfigInUse, _logger); + if (!ctx.Authenticate (_authSchemes, _realmInUse, _userCredFinder)) return; @@ -816,16 +819,24 @@ namespace WebSocketSharp.Server ); } catch (SocketException ex) { - _logger.Warn ("Receiving has been stopped.\n reason: " + ex.Message); + if (_state == ServerState.ShuttingDown) { + _logger.Info ("The receiving is stopped."); + break; + } + + _logger.Fatal (ex.ToString ()); break; } catch (Exception ex) { _logger.Fatal (ex.ToString ()); + if (cl != null) + cl.Close (); + break; } } - if (IsListening) + if (_state == ServerState.Start) abort (); }