From 8961af92749f219c295c5f4b333211ab50701ecf Mon Sep 17 00:00:00 2001 From: sta Date: Wed, 7 Dec 2016 16:35:44 +0900 Subject: [PATCH] [Modify] Polish it --- websocket-sharp/WebSocket.cs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index 14a159ff..8166a6dd 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -2190,14 +2190,30 @@ namespace WebSocketSharp if (_readyState != WebSocketState.Open) return false; - if (!send (frameAsBytes)) - return false; - var receivePong = _receivePong; if (receivePong == null) return false; - return receivePong.WaitOne (timeout); + lock (_forPing) { + try { + receivePong.Reset (); + + lock (_forState) { + if (_readyState != WebSocketState.Open) { + _logger.Error ("The state of the connection has been changed."); + return false; + } + + if (!sendBytes (frameAsBytes)) + return false; + } + + return receivePong.WaitOne (timeout); + } + catch (ObjectDisposedException) { + return false; + } + } } // As server, used to broadcast