diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index a1555313..52818f81 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -761,6 +761,7 @@ namespace WebSocketSharp var bytes = send ? WebSocketFrame.CreateCloseFrame (e.PayloadData, _client).ToArray () : null; e.WasClean = closeHandshake (bytes, receive, received); + releaseResources (); _logger.Trace ("End closing the connection."); @@ -786,13 +787,6 @@ namespace WebSocketSharp received = received || (receive && sent && _exitReceiving != null && _exitReceiving.WaitOne (_waitTime)); - if (_client) - releaseClientResources (); - else - releaseServerResources (); - - releaseCommonResources (); - var ret = sent && received; _logger.Debug ( String.Format ("Was clean?: {0}\n sent: {1}\n received: {2}", ret, sent, received)); @@ -1169,6 +1163,16 @@ namespace WebSocketSharp } } + private void releaseResources () + { + if (_client) + releaseClientResources (); + else + releaseServerResources (); + + releaseCommonResources (); + } + // As server private void releaseServerResources () { @@ -1702,6 +1706,8 @@ namespace WebSocketSharp } e.WasClean = closeHandshake (frameAsBytes, receive, false); + releaseServerResources (); + releaseCommonResources (); _readyState = WebSocketState.Closed; try {