Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Unified Diff: net/websockets/websocket_frame_parser.cc

Issue 10796107: WebSocketFrameChunk should use IOBuffer to hold data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reflect yutak's review Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/websockets/websocket_frame_parser.cc
diff --git a/net/websockets/websocket_frame_parser.cc b/net/websockets/websocket_frame_parser.cc
index 1acc64ce42af9825499e9c42a9e0147d8855b34c..ad422cc8181e794e39e6e6603693f22c3ffa95ec 100644
--- a/net/websockets/websocket_frame_parser.cc
+++ b/net/websockets/websocket_frame_parser.cc
@@ -12,6 +12,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
#include "net/base/big_endian.h"
+#include "net/base/io_buffer.h"
#include "net/websockets/websocket_frame.h"
namespace {
@@ -184,14 +185,18 @@ scoped_ptr<WebSocketFrameChunk> WebSocketFrameParser::DecodeFramePayload(
frame_chunk->header.reset(new WebSocketFrameHeader(*current_frame_header_));
}
frame_chunk->final_chunk = false;
- frame_chunk->data.assign(current, current + next_size);
+ frame_chunk->data = new IOBuffer(next_size);
+ frame_chunk->size = next_size;
+ DCHECK(frame_chunk->data);
+ char* io_data = frame_chunk->data->data();
+ memcpy(io_data, current, next_size);
if (current_frame_header_->masked) {
// Unmask the payload.
// TODO(yutak): This could be faster by doing unmasking for each
// machine word (instead of each byte).
size_t key_offset = frame_offset_ % kMaskingKeyLength;
for (uint64 i = 0; i < next_size; ++i) {
- frame_chunk->data[i] ^= masking_key_[key_offset];
+ io_data[i] ^= masking_key_[key_offset];
key_offset = (key_offset + 1) % kMaskingKeyLength;
}
}

Powered by Google App Engine
This is Rietveld 408576698