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

Side by Side Diff: net/websockets/websocket.cc

Issue 1108002: Implement new websocket handshake based on draft-hixie-thewebsocketprotocol-76 (Closed)
Patch Set: fix for review comments Created 10 years, 8 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 unified diff | Download patch
« no previous file with comments | « net/websockets/websocket.h ('k') | net/websockets/websocket_handshake.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 #include <limits> 6 #include <limits>
7 7
8 #include "net/websockets/websocket.h" 8 #include "net/websockets/websocket.h"
9 9
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "net/websockets/websocket_handshake.h" 11 #include "net/websockets/websocket_handshake.h"
12 #include "net/websockets/websocket_handshake_draft75.h"
12 13
13 namespace net { 14 namespace net {
14 15
15 WebSocket::WebSocket(Request* request, WebSocketDelegate* delegate) 16 WebSocket::WebSocket(Request* request, WebSocketDelegate* delegate)
16 : ready_state_(INITIALIZED), 17 : ready_state_(INITIALIZED),
17 request_(request), 18 request_(request),
18 handshake_(NULL), 19 handshake_(NULL),
19 delegate_(delegate), 20 delegate_(delegate),
20 origin_loop_(MessageLoop::current()), 21 origin_loop_(MessageLoop::current()),
21 socket_stream_(NULL), 22 socket_stream_(NULL),
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 DCHECK(socket_stream == socket_stream_); 95 DCHECK(socket_stream == socket_stream_);
95 max_pending_send_allowed_ = max_pending_send_allowed; 96 max_pending_send_allowed_ = max_pending_send_allowed;
96 97
97 // Use |max_pending_send_allowed| as hint for initial size of read buffer. 98 // Use |max_pending_send_allowed| as hint for initial size of read buffer.
98 current_read_buf_ = new GrowableIOBuffer(); 99 current_read_buf_ = new GrowableIOBuffer();
99 current_read_buf_->SetCapacity(max_pending_send_allowed_); 100 current_read_buf_->SetCapacity(max_pending_send_allowed_);
100 read_consumed_len_ = 0; 101 read_consumed_len_ = 0;
101 102
102 DCHECK(!current_write_buf_); 103 DCHECK(!current_write_buf_);
103 DCHECK(!handshake_.get()); 104 DCHECK(!handshake_.get());
104 handshake_.reset(new WebSocketHandshake( 105 switch (request_->version()) {
105 request_->url(), request_->origin(), request_->location(), 106 case DEFAULT_VERSION:
106 request_->protocol())); 107 handshake_.reset(new WebSocketHandshake(
108 request_->url(), request_->origin(), request_->location(),
109 request_->protocol()));
110 break;
111 case DRAFT75:
112 handshake_.reset(new WebSocketHandshakeDraft75(
113 request_->url(), request_->origin(), request_->location(),
114 request_->protocol()));
115 break;
116 default:
117 NOTREACHED() << "Unexpected protocol version:" << request_->version();
118 }
107 119
108 const std::string msg = handshake_->CreateClientHandshakeMessage(); 120 const std::string msg = handshake_->CreateClientHandshakeMessage();
109 IOBufferWithSize* buf = new IOBufferWithSize(msg.size()); 121 IOBufferWithSize* buf = new IOBufferWithSize(msg.size());
110 memcpy(buf->data(), msg.data(), msg.size()); 122 memcpy(buf->data(), msg.data(), msg.size());
111 pending_write_bufs_.push_back(buf); 123 pending_write_bufs_.push_back(buf);
112 origin_loop_->PostTask(FROM_HERE, 124 origin_loop_->PostTask(FROM_HERE,
113 NewRunnableMethod(this, &WebSocket::SendPending)); 125 NewRunnableMethod(this, &WebSocket::SendPending));
114 } 126 }
115 127
116 void WebSocket::OnSentData(SocketStream* socket_stream, int amount_sent) { 128 void WebSocket::OnSentData(SocketStream* socket_stream, int amount_sent) {
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 Release(); 315 Release();
304 } 316 }
305 317
306 void WebSocket::DoError(int error) { 318 void WebSocket::DoError(int error) {
307 DCHECK(MessageLoop::current() == origin_loop_); 319 DCHECK(MessageLoop::current() == origin_loop_);
308 if (delegate_) 320 if (delegate_)
309 delegate_->OnError(this, error); 321 delegate_->OnError(this, error);
310 } 322 }
311 323
312 } // namespace net 324 } // namespace net
OLDNEW
« no previous file with comments | « net/websockets/websocket.h ('k') | net/websockets/websocket_handshake.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698