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

Unified Diff: net/server/web_socket.cc

Issue 296053012: Replace StreamListenSocket with StreamSocket in HttpServer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 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/server/web_socket.cc
diff --git a/net/server/web_socket.cc b/net/server/web_socket.cc
index f06b425fee018c4f8d1020c4a94a02f00e1bbd56..5810aa831b129b2995d5b52aca14f750d1023c66 100644
--- a/net/server/web_socket.cc
+++ b/net/server/web_socket.cc
@@ -46,7 +46,8 @@ class WebSocketHixie76 : public net::WebSocket {
static net::WebSocket* Create(HttpConnection* connection,
const HttpServerRequestInfo& request,
size_t* pos) {
- if (connection->recv_data().length() < *pos + kWebSocketHandshakeBodyLen)
+ if (connection->read_buf()->GetUnconsumedSize()
+ < *pos + kWebSocketHandshakeBodyLen)
return NULL;
return new WebSocketHixie76(connection, request, pos);
}
@@ -83,17 +84,17 @@ class WebSocketHixie76 : public net::WebSocket {
virtual ParseResult Read(std::string* message) OVERRIDE {
DCHECK(message);
- const std::string& data = connection_->recv_data();
- if (data[0])
+ HttpConnection::ReadIOBuffer* read_buf = connection_->read_buf();
+ if (read_buf->data()[0])
return FRAME_ERROR;
+ std::string data(read_buf->data(), read_buf->GetUnconsumedSize());
size_t pos = data.find('\377', 1);
if (pos == std::string::npos)
return FRAME_INCOMPLETE;
- std::string buffer(data.begin() + 1, data.begin() + pos);
- message->swap(buffer);
- connection_->Shift(pos + 1);
+ message->assign(read_buf->data() + 1, pos - 1);
+ read_buf->DidConsume(pos + 1);
return FRAME_OK;
}
@@ -129,9 +130,8 @@ class WebSocketHixie76 : public net::WebSocket {
return;
}
- key3_ = connection->recv_data().substr(
- *pos,
- *pos + kWebSocketHandshakeBodyLen);
+ key3_.assign(connection->read_buf()->data() + *pos,
+ kWebSocketHandshakeBodyLen);
*pos += kWebSocketHandshakeBodyLen;
}
@@ -205,13 +205,14 @@ class WebSocketHybi17 : public WebSocket {
}
virtual ParseResult Read(std::string* message) OVERRIDE {
- const std::string& frame = connection_->recv_data();
+ HttpConnection::ReadIOBuffer* read_buf = connection_->read_buf();
+ const std::string frame(read_buf->data(), read_buf->GetUnconsumedSize());
int bytes_consumed = 0;
ParseResult result =
WebSocket::DecodeFrameHybi17(frame, true, &bytes_consumed, message);
if (result == FRAME_OK)
- connection_->Shift(bytes_consumed);
+ read_buf->DidConsume(bytes_consumed);
if (result == FRAME_CLOSE)
closed_ = true;
return result;

Powered by Google App Engine
This is Rietveld 408576698