Index: net/socket/ssl_client_socket_openssl.cc |
diff --git a/net/socket/ssl_client_socket_openssl.cc b/net/socket/ssl_client_socket_openssl.cc |
index b253dfeae50884859e2dceb3657363d2a6834b29..e5a0f6c3eae2089acea33a246d0e83aa41e1ed68 100644 |
--- a/net/socket/ssl_client_socket_openssl.cc |
+++ b/net/socket/ssl_client_socket_openssl.cc |
@@ -348,6 +348,7 @@ SSLClientSocketOpenSSL::SSLClientSocketOpenSSL( |
pending_read_error_(kNoPendingReadResult), |
transport_write_error_(OK), |
completed_handshake_(false), |
+ was_used_to_convey_data_(false), |
client_auth_cert_needed_(false), |
cert_verifier_(context.cert_verifier), |
server_bound_cert_service_(context.server_bound_cert_service), |
@@ -537,11 +538,7 @@ void SSLClientSocketOpenSSL::SetOmniboxSpeculation() { |
} |
bool SSLClientSocketOpenSSL::WasEverUsed() const { |
- if (transport_.get() && transport_->socket()) |
- return transport_->socket()->WasEverUsed(); |
- |
- NOTREACHED(); |
- return false; |
+ return was_used_to_convey_data_; |
} |
bool SSLClientSocketOpenSSL::UsingTCPFastOpen() const { |
@@ -612,6 +609,8 @@ int SSLClientSocketOpenSSL::Read(IOBuffer* buf, |
if (rv == ERR_IO_PENDING) { |
user_read_callback_ = callback; |
} else { |
+ if (rv > 0) |
+ was_used_to_convey_data_ = true; |
user_read_buf_ = NULL; |
user_read_buf_len_ = 0; |
} |
@@ -630,6 +629,8 @@ int SSLClientSocketOpenSSL::Write(IOBuffer* buf, |
if (rv == ERR_IO_PENDING) { |
user_write_callback_ = callback; |
} else { |
+ if (rv > 0) |
+ was_used_to_convey_data_ = true; |
user_write_buf_ = NULL; |
user_write_buf_len_ = 0; |
} |
@@ -769,6 +770,8 @@ bool SSLClientSocketOpenSSL::Init() { |
void SSLClientSocketOpenSSL::DoReadCallback(int rv) { |
// Since Run may result in Read being called, clear |user_read_callback_| |
// up front. |
+ if (rv > 0) |
+ was_used_to_convey_data_ = true; |
user_read_buf_ = NULL; |
user_read_buf_len_ = 0; |
base::ResetAndReturn(&user_read_callback_).Run(rv); |
@@ -777,6 +780,8 @@ void SSLClientSocketOpenSSL::DoReadCallback(int rv) { |
void SSLClientSocketOpenSSL::DoWriteCallback(int rv) { |
// Since Run may result in Write being called, clear |user_write_callback_| |
// up front. |
+ if (rv > 0) |
+ was_used_to_convey_data_ = true; |
user_write_buf_ = NULL; |
user_write_buf_len_ = 0; |
base::ResetAndReturn(&user_write_callback_).Run(rv); |