| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "net/websockets/websocket_job.h" | 5 #include "net/websockets/websocket_job.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 linked_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); | 390 linked_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock); |
| 391 handshake_request_->GetRequestHeaderBlock( | 391 handshake_request_->GetRequestHeaderBlock( |
| 392 socket_->url(), headers.get(), &challenge_); | 392 socket_->url(), headers.get(), &challenge_); |
| 393 spdy_websocket_stream_->SendRequest(headers); | 393 spdy_websocket_stream_->SendRequest(headers); |
| 394 } else { | 394 } else { |
| 395 const std::string& handshake_request = | 395 const std::string& handshake_request = |
| 396 handshake_request_->GetRawRequest(); | 396 handshake_request_->GetRawRequest(); |
| 397 handshake_request_sent_ = 0; | 397 handshake_request_sent_ = 0; |
| 398 socket_->net_log()->AddEvent( | 398 socket_->net_log()->AddEvent( |
| 399 NetLog::TYPE_WEB_SOCKET_SEND_REQUEST_HEADERS, | 399 NetLog::TYPE_WEB_SOCKET_SEND_REQUEST_HEADERS, |
| 400 make_scoped_refptr( | 400 base::Bind(&NetLogWebSocketHandshakeCallback, &handshake_request)); |
| 401 new NetLogWebSocketHandshakeParameter(handshake_request))); | |
| 402 socket_->SendData(handshake_request.data(), | 401 socket_->SendData(handshake_request.data(), |
| 403 handshake_request.size()); | 402 handshake_request.size()); |
| 404 } | 403 } |
| 405 // Just buffered in |handshake_request_|. | 404 // Just buffered in |handshake_request_|. |
| 406 started_to_send_handshake_request_ = true; | 405 started_to_send_handshake_request_ = true; |
| 407 } | 406 } |
| 408 | 407 |
| 409 void WebSocketJob::OnSentHandshakeRequest( | 408 void WebSocketJob::OnSentHandshakeRequest( |
| 410 SocketStream* socket, int amount_sent) { | 409 SocketStream* socket, int amount_sent) { |
| 411 DCHECK_EQ(state_, CONNECTING); | 410 DCHECK_EQ(state_, CONNECTING); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 432 received_data_after_handshake_.end(), data, data + len); | 431 received_data_after_handshake_.end(), data, data + len); |
| 433 return; | 432 return; |
| 434 } | 433 } |
| 435 | 434 |
| 436 size_t response_length = handshake_response_->ParseRawResponse(data, len); | 435 size_t response_length = handshake_response_->ParseRawResponse(data, len); |
| 437 if (!handshake_response_->HasResponse()) { | 436 if (!handshake_response_->HasResponse()) { |
| 438 // not yet. we need more data. | 437 // not yet. we need more data. |
| 439 return; | 438 return; |
| 440 } | 439 } |
| 441 // handshake message is completed. | 440 // handshake message is completed. |
| 441 std::string raw_response = handshake_response_->GetRawResponse(); |
| 442 socket_->net_log()->AddEvent( | 442 socket_->net_log()->AddEvent( |
| 443 NetLog::TYPE_WEB_SOCKET_READ_RESPONSE_HEADERS, | 443 NetLog::TYPE_WEB_SOCKET_READ_RESPONSE_HEADERS, |
| 444 make_scoped_refptr(new NetLogWebSocketHandshakeParameter( | 444 base::Bind(&NetLogWebSocketHandshakeCallback, &raw_response)); |
| 445 handshake_response_->GetRawResponse()))); | |
| 446 if (len - response_length > 0) { | 445 if (len - response_length > 0) { |
| 447 // If we received extra data, it should be frame data. | 446 // If we received extra data, it should be frame data. |
| 448 DCHECK(received_data_after_handshake_.empty()); | 447 DCHECK(received_data_after_handshake_.empty()); |
| 449 received_data_after_handshake_.assign(data + response_length, data + len); | 448 received_data_after_handshake_.assign(data + response_length, data + len); |
| 450 } | 449 } |
| 451 SaveCookiesAndNotifyHeaderComplete(); | 450 SaveCookiesAndNotifyHeaderComplete(); |
| 452 } | 451 } |
| 453 | 452 |
| 454 void WebSocketJob::SaveCookiesAndNotifyHeaderComplete() { | 453 void WebSocketJob::SaveCookiesAndNotifyHeaderComplete() { |
| 455 // handshake message is completed. | 454 // handshake message is completed. |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 651 | 650 |
| 652 scoped_refptr<IOBufferWithSize> next_buffer = send_buffer_queue_.front(); | 651 scoped_refptr<IOBufferWithSize> next_buffer = send_buffer_queue_.front(); |
| 653 send_buffer_queue_.pop_front(); | 652 send_buffer_queue_.pop_front(); |
| 654 current_send_buffer_ = new DrainableIOBuffer(next_buffer, | 653 current_send_buffer_ = new DrainableIOBuffer(next_buffer, |
| 655 next_buffer->size()); | 654 next_buffer->size()); |
| 656 SendDataInternal(current_send_buffer_->data(), | 655 SendDataInternal(current_send_buffer_->data(), |
| 657 current_send_buffer_->BytesRemaining()); | 656 current_send_buffer_->BytesRemaining()); |
| 658 } | 657 } |
| 659 | 658 |
| 660 } // namespace net | 659 } // namespace net |
| OLD | NEW |