summaryrefslogtreecommitdiffstats
path: root/net/websockets/websocket_frame.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/websockets/websocket_frame.cc')
-rw-r--r--net/websockets/websocket_frame.cc27
1 files changed, 18 insertions, 9 deletions
diff --git a/net/websockets/websocket_frame.cc b/net/websockets/websocket_frame.cc
index f05b5b7..763712a 100644
--- a/net/websockets/websocket_frame.cc
+++ b/net/websockets/websocket_frame.cc
@@ -41,18 +41,27 @@ inline void MaskWebSocketFramePayloadByBytes(
namespace net {
-scoped_ptr<WebSocketFrameHeader> WebSocketFrameHeader::Clone() {
+scoped_ptr<WebSocketFrameHeader> WebSocketFrameHeader::Clone() const {
scoped_ptr<WebSocketFrameHeader> ret(new WebSocketFrameHeader(opcode));
- ret->final = final;
- ret->reserved1 = reserved1;
- ret->reserved2 = reserved2;
- ret->reserved3 = reserved3;
- ret->opcode = opcode;
- ret->masked = masked;
- ret->payload_length = payload_length;
+ ret->CopyFrom(*this);
return ret.Pass();
}
+void WebSocketFrameHeader::CopyFrom(const WebSocketFrameHeader& source) {
+ final = source.final;
+ reserved1 = source.reserved1;
+ reserved2 = source.reserved2;
+ reserved3 = source.reserved3;
+ opcode = source.opcode;
+ masked = source.masked;
+ payload_length = source.payload_length;
+}
+
+WebSocketFrame::WebSocketFrame(WebSocketFrameHeader::OpCode opcode)
+ : header(opcode) {}
+
+WebSocketFrame::~WebSocketFrame() {}
+
WebSocketFrameChunk::WebSocketFrameChunk() : final_chunk(false) {}
WebSocketFrameChunk::~WebSocketFrameChunk() {}
@@ -195,7 +204,7 @@ void MaskWebSocketFramePayload(const WebSocketMaskingKey& masking_key,
// Create a version of the mask which is rotated by the appropriate offset
// for our alignment. The "trick" here is that 0 XORed with the mask will
// give the value of the mask for the appropriate byte.
- char realigned_mask[kMaskingKeyLength] = { 0 };
+ char realigned_mask[kMaskingKeyLength] = {};
MaskWebSocketFramePayloadByBytes(
masking_key,
(frame_offset + aligned_begin - data) % kMaskingKeyLength,