From a01e7cb24db061b43637cd9247f10d3dd1c153b5 Mon Sep 17 00:00:00 2001 From: sta Date: Sat, 7 Sep 2013 17:29:15 +0900 Subject: [PATCH] Modified closing --- websocket-sharp/WebSocket.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index 1a071f30..72de687d 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -535,6 +535,7 @@ namespace WebSocketSharp { _logger.Debug ("Is this thread background?: " + Thread.CurrentThread.IsBackground); + var sent = false; CloseEventArgs args = null; lock (_forClose) { @@ -556,17 +557,16 @@ namespace WebSocketSharp else { if (!data.ContainsReservedCloseStatusCode) - args.WasClean = send (createControlFrame (Opcode.CLOSE, data, _client)); + sent = send (createControlFrame (Opcode.CLOSE, data, _client)); } } - if (!Thread.CurrentThread.IsBackground && - _exitReceiving != null && - !_exitReceiving.WaitOne (5 * 1000)) - args.WasClean = false; + var received = Thread.CurrentThread.IsBackground || + (_exitReceiving != null && _exitReceiving.WaitOne (5 * 1000)); - if (!closeResources ()) - args.WasClean = false; + var released = closeResources (); + args.WasClean = sent && received && released; + _logger.Debug ("Was clean?: " + args.WasClean); _readyState = WebSocketState.CLOSED; OnClose.Emit (this, args);