diff --git a/websocket-sharp/Server/HttpServer.cs b/websocket-sharp/Server/HttpServer.cs
index 7d447fa6..4946ec7d 100644
--- a/websocket-sharp/Server/HttpServer.cs
+++ b/websocket-sharp/Server/HttpServer.cs
@@ -749,20 +749,15 @@ namespace WebSocketSharp.Server
/// used to stop the WebSocket services.
///
///
- /// 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;
@@ -771,8 +766,13 @@ namespace WebSocketSharp.Server
_state = ServerState.ShuttingDown;
}
- 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);
+ }
stopReceiving (5000);
@@ -785,19 +785,15 @@ namespace WebSocketSharp.Server
///
///
/// One of the enum values, represents the status code
- /// indicating the reasons 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;
@@ -806,8 +802,13 @@ namespace WebSocketSharp.Server
_state = ServerState.ShuttingDown;
}
- 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);
+ }
stopReceiving (5000);