| Index: net/socket/ssl_client_socket_win.cc
|
| diff --git a/net/socket/ssl_client_socket_win.cc b/net/socket/ssl_client_socket_win.cc
|
| index 03b8bfe9e2d76c735aec47555e8c98421cfcfab2..7212095e33c9cba99d5c3f491968343b322b4d49 100644
|
| --- a/net/socket/ssl_client_socket_win.cc
|
| +++ b/net/socket/ssl_client_socket_win.cc
|
| @@ -14,6 +14,7 @@
|
| #include "net/base/cert_verifier.h"
|
| #include "net/base/connection_type_histograms.h"
|
| #include "net/base/io_buffer.h"
|
| +#include "net/base/load_log.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/base/ssl_cert_request_info.h"
|
| #include "net/base/ssl_info.h"
|
| @@ -426,11 +427,33 @@ void SSLClientSocketWin::GetSSLCertRequestInfo(
|
| DCHECK(ok);
|
| }
|
|
|
| -int SSLClientSocketWin::Connect(CompletionCallback* callback) {
|
| +int SSLClientSocketWin::Connect(CompletionCallback* callback,
|
| + LoadLog* load_log) {
|
| DCHECK(transport_.get());
|
| DCHECK(next_state_ == STATE_NONE);
|
| DCHECK(!user_connect_callback_);
|
|
|
| + LoadLog::BeginEvent(load_log, LoadLog::TYPE_SSL_CONNECT);
|
| +
|
| + int rv = InitializeSSLContext();
|
| + if (rv != OK) {
|
| + LoadLog::EndEvent(load_log, LoadLog::TYPE_SSL_CONNECT);
|
| + return rv;
|
| + }
|
| +
|
| + writing_first_token_ = true;
|
| + next_state_ = STATE_HANDSHAKE_WRITE;
|
| + rv = DoLoop(OK);
|
| + if (rv == ERR_IO_PENDING) {
|
| + user_connect_callback_ = callback;
|
| + load_log_ = load_log;
|
| + } else {
|
| + LoadLog::EndEvent(load_log, LoadLog::TYPE_SSL_CONNECT);
|
| + }
|
| + return rv;
|
| +}
|
| +
|
| +int SSLClientSocketWin::InitializeSSLContext() {
|
| int ssl_version_mask = 0;
|
| if (ssl_config_.ssl2_enabled)
|
| ssl_version_mask |= SSL2;
|
| @@ -487,14 +510,10 @@ int SSLClientSocketWin::Connect(CompletionCallback* callback) {
|
| return MapSecurityError(status);
|
| }
|
|
|
| - writing_first_token_ = true;
|
| - next_state_ = STATE_HANDSHAKE_WRITE;
|
| - int rv = DoLoop(OK);
|
| - if (rv == ERR_IO_PENDING)
|
| - user_connect_callback_ = callback;
|
| - return rv;
|
| + return OK;
|
| }
|
|
|
| +
|
| void SSLClientSocketWin::Disconnect() {
|
| // TODO(wtc): Send SSL close_notify alert.
|
| next_state_ = STATE_NONE;
|
| @@ -618,6 +637,9 @@ void SSLClientSocketWin::OnHandshakeIOComplete(int result) {
|
| // The SSL handshake has some round trips. Any error, other than waiting
|
| // for IO, means that we've failed and need to notify the caller.
|
| if (rv != ERR_IO_PENDING) {
|
| + LoadLog::EndEvent(load_log_, LoadLog::TYPE_SSL_CONNECT);
|
| + load_log_ = NULL;
|
| +
|
| // If there is no connect callback available to call, it had better be
|
| // because we are renegotiating (which occurs because we are in the middle
|
| // of a Read when the renegotiation process starts). We need to inform the
|
|
|