From 7b050e07e26e5164118c9785728da2904a482b7b Mon Sep 17 00:00:00 2001 From: sta Date: Tue, 27 Jan 2015 16:14:04 +0900 Subject: [PATCH] Modified the WebSocketServer class, fix for 'No Status Code' for the stop --- websocket-sharp/Server/WebSocketServer.cs | 41 +++++++++++------------ 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/websocket-sharp/Server/WebSocketServer.cs b/websocket-sharp/Server/WebSocketServer.cs index f925cce7..7173123d 100644 --- a/websocket-sharp/Server/WebSocketServer.cs +++ b/websocket-sharp/Server/WebSocketServer.cs @@ -834,20 +834,15 @@ namespace WebSocketSharp.Server /// and . /// /// - /// A that represents the status code indicating the reason for stop. + /// A that represents the status code indicating the reason for the stop. /// /// - /// A that represents the reason for stop. + /// A that represents the reason for the stop. /// public void Stop (ushort code, string reason) { - CloseEventArgs e = null; lock (_sync) { - var msg = - _state.CheckIfStart () ?? - code.CheckIfValidCloseStatusCode () ?? - (e = new CloseEventArgs (code, reason)).RawData.CheckIfValidControlData ("reason"); - + var msg = _state.CheckIfStart () ?? code.CheckIfValidCloseParameters (reason); if (msg != null) { _logger.Error (msg); return; @@ -857,9 +852,13 @@ namespace WebSocketSharp.Server } stopReceiving (5000); - - var send = !code.IsReserved (); - _services.Stop (e, send, send); + if (code.IsNoStatusCode ()) { + _services.Stop (new CloseEventArgs (), true, true); + } + else { + var send = !code.IsReserved (); + _services.Stop (new CloseEventArgs (code, reason), send, send); + } _state = ServerState.Stop; } @@ -870,19 +869,15 @@ namespace WebSocketSharp.Server /// /// /// One of the enum values, represents the status code - /// indicating the reason for stop. + /// indicating the reason for the stop. /// /// - /// A that represents the reason for stop. + /// A that represents the reason for the stop. /// public void Stop (CloseStatusCode code, string reason) { - CloseEventArgs e = null; lock (_sync) { - var msg = - _state.CheckIfStart () ?? - (e = new CloseEventArgs (code, reason)).RawData.CheckIfValidControlData ("reason"); - + var msg = _state.CheckIfStart () ?? code.CheckIfValidCloseParameters (reason); if (msg != null) { _logger.Error (msg); return; @@ -892,9 +887,13 @@ namespace WebSocketSharp.Server } stopReceiving (5000); - - var send = !code.IsReserved (); - _services.Stop (e, send, send); + if (code.IsNoStatusCode ()) { + _services.Stop (new CloseEventArgs (), true, true); + } + else { + var send = !code.IsReserved (); + _services.Stop (new CloseEventArgs (code, reason), send, send); + } _state = ServerState.Stop; }