diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index 2bc00150..b28319de 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -1035,16 +1035,21 @@ namespace WebSocketSharp private void open () { - startReceiving (); + try { + startReceiving (); - lock (_forEvent) { - try { - OnOpen.Emit (this, EventArgs.Empty); - } - catch (Exception ex) { - acceptException (ex, "An exception has occurred while OnOpen."); + lock (_forEvent) { + try { + OnOpen.Emit (this, EventArgs.Empty); + } + catch (Exception ex) { + acceptException (ex, "An exception has occurred while OnOpen."); + } } } + catch (Exception ex) { + acceptException (ex, "An exception has occurred while opening."); + } } // As client @@ -1468,8 +1473,11 @@ namespace WebSocketSharp internal bool Ping (byte [] frame, int timeout) { try { - var pong = _receivePong; - return _readyState == WebSocketState.Open && send (frame) && pong.WaitOne (timeout); + AutoResetEvent pong; + return _readyState == WebSocketState.Open && + send (frame) && + (pong = _receivePong) != null && + pong.WaitOne (timeout); } catch (Exception ex) { _logger.Fatal ("An exception has occurred while Ping:\n" + ex.ToString ());