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

Side by Side Diff: net/base/ssl_client_socket_win.cc

Issue 21501: If an idle socket has received data unexpectedly, we... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Final upload before checkin. Created 11 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « net/base/ssl_client_socket_win.h ('k') | net/base/tcp_client_socket.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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/base/ssl_client_socket_win.h" 5 #include "net/base/ssl_client_socket_win.h"
6 6
7 #include <schnlsp.h> 7 #include <schnlsp.h>
8 8
9 #include "base/lock.h" 9 #include "base/lock.h"
10 #include "base/singleton.h" 10 #include "base/singleton.h"
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 bool SSLClientSocketWin::IsConnected() const { 307 bool SSLClientSocketWin::IsConnected() const {
308 // Ideally, we should also check if we have received the close_notify alert 308 // Ideally, we should also check if we have received the close_notify alert
309 // message from the server, and return false in that case. We're not doing 309 // message from the server, and return false in that case. We're not doing
310 // that, so this function may return a false positive. Since the upper 310 // that, so this function may return a false positive. Since the upper
311 // layer (HttpNetworkTransaction) needs to handle a persistent connection 311 // layer (HttpNetworkTransaction) needs to handle a persistent connection
312 // closed by the server when we send a request anyway, a false positive in 312 // closed by the server when we send a request anyway, a false positive in
313 // exchange for simpler code is a good trade-off. 313 // exchange for simpler code is a good trade-off.
314 return completed_handshake_ && transport_->IsConnected(); 314 return completed_handshake_ && transport_->IsConnected();
315 } 315 }
316 316
317 bool SSLClientSocketWin::IsConnectedAndIdle() const {
318 // Unlike IsConnected, this method doesn't return a false positive.
319 //
320 // Strictly speaking, we should check if we have received the close_notify
321 // alert message from the server, and return false in that case. Although
322 // the close_notify alert message means EOF in the SSL layer, it is just
323 // bytes to the transport layer below, so transport_->IsConnectedAndIdle()
324 // returns the desired false when we receive close_notify.
325 return completed_handshake_ && transport_->IsConnectedAndIdle();
326 }
327
317 int SSLClientSocketWin::Read(char* buf, int buf_len, 328 int SSLClientSocketWin::Read(char* buf, int buf_len,
318 CompletionCallback* callback) { 329 CompletionCallback* callback) {
319 DCHECK(completed_handshake_); 330 DCHECK(completed_handshake_);
320 DCHECK(next_state_ == STATE_NONE); 331 DCHECK(next_state_ == STATE_NONE);
321 DCHECK(!user_callback_); 332 DCHECK(!user_callback_);
322 333
323 // If we have surplus decrypted plaintext, satisfy the Read with it without 334 // If we have surplus decrypted plaintext, satisfy the Read with it without
324 // reading more ciphertext from the transport socket. 335 // reading more ciphertext from the transport socket.
325 if (bytes_decrypted_ != 0) { 336 if (bytes_decrypted_ != 0) {
326 int len = std::min(buf_len, bytes_decrypted_); 337 int len = std::min(buf_len, bytes_decrypted_);
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after
932 if (server_cert_verify_result_.has_md4) 943 if (server_cert_verify_result_.has_md4)
933 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD4); 944 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD4);
934 if (server_cert_verify_result_.has_md5_ca) 945 if (server_cert_verify_result_.has_md5_ca)
935 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD5_CA); 946 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD5_CA);
936 if (server_cert_verify_result_.has_md2_ca) 947 if (server_cert_verify_result_.has_md2_ca)
937 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD2_CA); 948 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD2_CA);
938 } 949 }
939 950
940 } // namespace net 951 } // namespace net
941 952
OLDNEW
« no previous file with comments | « net/base/ssl_client_socket_win.h ('k') | net/base/tcp_client_socket.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698