From a0bfa1f52d15c041e6ddbe2cc6998c722d261831 Mon Sep 17 00:00:00 2001 From: sta Date: Fri, 6 Jan 2017 17:57:11 +0900 Subject: [PATCH] [Fix] Unmask it --- websocket-sharp/WebSocket.cs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index 57953e47..e0283c80 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -1473,13 +1473,26 @@ namespace WebSocketSharp private bool processPingFrame (WebSocketFrame frame) { var data = frame.PayloadData.ApplicationData; - if (!send (Fin.Final, Opcode.Pong, data, false)) - return false; + var pong = WebSocketFrame.CreatePongFrame (data, _client); + + lock (_forState) { + if (_readyState != WebSocketState.Open) { + _logger.Error ("The state of the connection has been changed."); + return false; + } + + if (!sendBytes (pong.ToArray ())) + return false; + } _logger.Trace ("A pong has been sent to respond to this ping."); - if (_emitOnPing) + if (_emitOnPing) { + if (_client) + pong.Unmask (); + enqueueToMessageEventQueue (new MessageEventArgs (frame)); + } return true; }