Index: net/websockets/websocket_frame.cc |
diff --git a/net/websockets/websocket_frame.cc b/net/websockets/websocket_frame.cc |
index da65cbac577f19ecb86c59d7dd5b4bdee412ffc5..8038475465f1265063da2ee6f7fcc9eb6299194d 100644 |
--- a/net/websockets/websocket_frame.cc |
+++ b/net/websockets/websocket_frame.cc |
@@ -42,6 +42,22 @@ WebSocketFrameChunk::WebSocketFrameChunk() : final_chunk(false) { |
WebSocketFrameChunk::~WebSocketFrameChunk() { |
} |
+int GetWebSocketFrameHeaderSize(const WebSocketFrameHeader& header) { |
+ int extended_length_size = 0; |
+ if (header.payload_length > kMaxPayloadLengthWithoutExtendedLengthField && |
+ header.payload_length <= kuint16max) { |
+ extended_length_size = 2; |
+ } else if (header.payload_length > kuint16max) { |
+ extended_length_size = 8; |
+ } |
+ |
+ int header_size = |
mmenke
2012/08/20 16:33:46
optional: May want to just return this, rather th
Yuta Kitamura
2012/08/21 04:22:21
Done.
|
+ WebSocketFrameHeader::kBaseHeaderSize + |
+ extended_length_size + |
+ (header.masked ? WebSocketFrameHeader::kMaskingKeyLength : 0); |
+ return header_size; |
+} |
+ |
int WriteWebSocketFrameHeader(const WebSocketFrameHeader& header, |
const WebSocketMaskingKey* masking_key, |
char* buffer, |
@@ -63,17 +79,7 @@ int WriteWebSocketFrameHeader(const WebSocketFrameHeader& header, |
// This function constructs frame header (the first three in the list |
// above). |
- size_t extended_length_size = 0; |
- if (header.payload_length > kMaxPayloadLengthWithoutExtendedLengthField && |
- header.payload_length <= kuint16max) { |
- extended_length_size = 2; |
- } else if (header.payload_length > kuint16max) { |
- extended_length_size = 8; |
- } |
- int header_size = |
- WebSocketFrameHeader::kBaseHeaderSize + |
- extended_length_size + |
- (header.masked ? WebSocketFrameHeader::kMaskingKeyLength : 0); |
+ int header_size = GetWebSocketFrameHeaderSize(header); |
if (header_size > buffer_size) |
return ERR_INVALID_ARGUMENT; |
@@ -87,6 +93,7 @@ int WriteWebSocketFrameHeader(const WebSocketFrameHeader& header, |
first_byte |= header.opcode & kOpCodeMask; |
buffer[buffer_index++] = first_byte; |
+ int extended_length_size = 0; |
uint8 second_byte = 0u; |
second_byte |= header.masked ? kMaskBit : 0u; |
if (header.payload_length <= |
@@ -94,17 +101,19 @@ int WriteWebSocketFrameHeader(const WebSocketFrameHeader& header, |
second_byte |= header.payload_length; |
} else if (header.payload_length <= kuint16max) { |
second_byte |= kPayloadLengthWithTwoByteExtendedLengthField; |
+ extended_length_size = 2; |
} else { |
second_byte |= kPayloadLengthWithEightByteExtendedLengthField; |
+ extended_length_size = 8; |
} |
buffer[buffer_index++] = second_byte; |
// Writes "extended payload length" field. |
- if (extended_length_size == 2u) { |
+ if (extended_length_size == 2) { |
uint16 payload_length_16 = static_cast<uint16>(header.payload_length); |
WriteBigEndian(buffer + buffer_index, payload_length_16); |
buffer_index += sizeof(uint16); |
- } else if (extended_length_size == 8u) { |
+ } else if (extended_length_size == 8) { |
WriteBigEndian(buffer + buffer_index, header.payload_length); |
buffer_index += sizeof(uint64); |
} |