diff --git a/websocket-sharp/PayloadData.cs b/websocket-sharp/PayloadData.cs index 4e629d88c..78cf03e14 100644 --- a/websocket-sharp/PayloadData.cs +++ b/websocket-sharp/PayloadData.cs @@ -115,6 +115,21 @@ internal PayloadData (ushort code, string reason) _codeSet = true; _reasonSet = true; } + + internal PayloadData(PayloadData original) + { + _code = original._code; + _codeSet = original._codeSet; + _extDataLength = original._extDataLength; + _length = original._length; + _reason = original._reason; + _reasonSet = original._reasonSet; + + _data = new byte[_length]; + original._data.CopyTo(_data, 0); + + + } #endregion diff --git a/websocket-sharp/WebSocketFrame.cs b/websocket-sharp/WebSocketFrame.cs index 219242c1d..8badf154f 100644 --- a/websocket-sharp/WebSocketFrame.cs +++ b/websocket-sharp/WebSocketFrame.cs @@ -108,8 +108,9 @@ internal WebSocketFrame ( _rsv2 = Rsv.Off; _rsv3 = Rsv.Off; _opcode = opcode; + _payloadData = new PayloadData(payloadData); - var len = payloadData.Length; + var len = _payloadData.Length; if (len < 126) { _payloadLength = (byte) len; _extPayloadLength = WebSocket.EmptyBytes; @@ -126,14 +127,13 @@ internal WebSocketFrame ( if (mask) { _mask = Mask.On; _maskingKey = createMaskingKey (); - payloadData.Mask (_maskingKey); + _payloadData.Mask (_maskingKey); } else { _mask = Mask.Off; _maskingKey = WebSocket.EmptyBytes; } - _payloadData = payloadData; } #endregion