diff options
author | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-02 10:15:50 +0000 |
---|---|---|
committer | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-02 10:15:50 +0000 |
commit | a53cfc534ef3633acb4eb0f32011f5886c4a6ec0 (patch) | |
tree | 48973789f8f31cccd27db42de0a389d1b1ea84cc /net/websockets/websocket_job.cc | |
parent | 022a0e299a8978f0fb8171fe223e6993bc64e9dc (diff) | |
download | chromium_src-a53cfc534ef3633acb4eb0f32011f5886c4a6ec0.zip chromium_src-a53cfc534ef3633acb4eb0f32011f5886c4a6ec0.tar.gz chromium_src-a53cfc534ef3633acb4eb0f32011f5886c4a6ec0.tar.bz2 |
Add invalid data send check on CONNECTING state
Handshake data should be sent at once. WebSocketJob should reject any
other subsequent data sending until the handshake is done and connection
is opened.
BUG=84422
TEST=net_unittest --gtest_filter=WebSocket\*
Review URL: http://codereview.chromium.org/7075027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87597 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/websockets/websocket_job.cc')
-rw-r--r-- | net/websockets/websocket_job.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/websockets/websocket_job.cc b/net/websockets/websocket_job.cc index 10b351a..fc67f9a 100644 --- a/net/websockets/websocket_job.cc +++ b/net/websockets/websocket_job.cc @@ -72,6 +72,7 @@ WebSocketJob::WebSocketJob(SocketStream::Delegate* delegate) callback_(NULL), handshake_request_(new WebSocketHandshakeRequestHandler), handshake_response_(new WebSocketHandshakeResponseHandler), + started_to_send_handshake_request_(false), handshake_request_sent_(0), response_cookies_save_index_(0), send_frame_handler_(new WebSocketFrameHandler), @@ -273,6 +274,8 @@ void WebSocketJob::OnError(const SocketStream* socket, int error) { bool WebSocketJob::SendHandshakeRequest(const char* data, int len) { DCHECK_EQ(state_, CONNECTING); + if (started_to_send_handshake_request_) + return false; if (!handshake_request_->ParseRequest(data, len)) return false; @@ -281,6 +284,7 @@ bool WebSocketJob::SendHandshakeRequest(const char* data, int len) { handshake_request_->protocol_version()); AddCookieHeaderAndSend(); // Just buffered in |handshake_request_|. + started_to_send_handshake_request_ = true; return true; } |