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 89cb40592952b387939d39c8ea21938f96c2bd2f..cb03d83cd0abeff07398ba7af3439c2875ad67ac 100644 |
--- a/net/socket/ssl_client_socket_openssl.cc |
+++ b/net/socket/ssl_client_socket_openssl.cc |
@@ -374,6 +374,15 @@ SSLClientSocketOpenSSL::~SSLClientSocketOpenSSL() { |
Disconnect(); |
} |
+// Compute a unique key string for the SSL session cache. |
+// Return a string. |
wtc
2014/08/12 14:51:01
I remember I asked you to revise this comment befo
mshelley
2014/08/12 21:47:01
Done.
|
+std::string SSLClientSocketOpenSSL::GetSessionCacheKey() const { |
+ std::string result = host_and_port_.ToString(); |
+ result.append("/"); |
+ result.append(ssl_session_cache_shard_); |
+ return result; |
+} |
+ |
bool SSLClientSocketOpenSSL::InSessionCache() const { |
SSLContext* context = SSLContext::GetInstance(); |
std::string cache_key = GetSessionCacheKey(); |
@@ -639,8 +648,13 @@ int SSLClientSocketOpenSSL::Read(IOBuffer* buf, |
if (rv == ERR_IO_PENDING) { |
user_read_callback_ = callback; |
} else { |
- if (rv > 0) |
+ if (rv > 0) { |
was_ever_used_ = true; |
+ } else if (rv < 0) { |
+ // Failure of a read attempt may indicate a failed false start |
+ // connection. |
+ OnHandshakeCompletion(); |
+ } |
Ryan Sleevi
2014/08/12 00:27:42
This should be / is a separate CL, right?
wtc
2014/08/12 14:51:00
This is a merge error. The current code is on line
mshelley
2014/08/12 21:47:01
Done.
|
user_read_buf_ = NULL; |
user_read_buf_len_ = 0; |
if (rv <= 0) { |
@@ -664,8 +678,13 @@ int SSLClientSocketOpenSSL::Write(IOBuffer* buf, |
if (rv == ERR_IO_PENDING) { |
user_write_callback_ = callback; |
} else { |
- if (rv > 0) |
+ if (rv > 0) { |
was_ever_used_ = true; |
+ } else { |
+ // Failure of a write attempt may indicate a failed false start |
+ // connection. |
+ OnHandshakeCompletion(); |
+ } |
wtc
2014/08/12 14:51:01
Please undo this change.
mshelley
2014/08/12 21:47:01
Done.
|
user_write_buf_ = NULL; |
user_write_buf_len_ = 0; |
if (rv < 0) { |
@@ -845,10 +864,6 @@ void SSLClientSocketOpenSSL::DoWriteCallback(int rv) { |
base::ResetAndReturn(&user_write_callback_).Run(rv); |
} |
-std::string SSLClientSocketOpenSSL::GetSessionCacheKey() const { |
- return CreateSessionCacheKey(host_and_port_, ssl_session_cache_shard_); |
-} |
- |
void SSLClientSocketOpenSSL::OnHandshakeCompletion() { |
if (!handshake_completion_callback_.is_null()) |
base::ResetAndReturn(&handshake_completion_callback_).Run(); |
@@ -1079,7 +1094,6 @@ X509Certificate* SSLClientSocketOpenSSL::UpdateServerCert() { |
if (!server_cert_chain_->IsValid()) |
DVLOG(1) << "UpdateServerCert received invalid certificate chain from peer"; |
- |
wtc
2014/08/12 14:51:01
This is probably a merge error. I seem to remember
|
return server_cert_.get(); |
} |