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

Unified Diff: net/socket/ssl_client_socket_openssl.h

Issue 416683002: This CL corrects a bug in which the OnHandshakeComplete callback for an ssl session was never called (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@r2
Patch Set: Removed session to callback map from SSLSessionCallback, added unittest Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: net/socket/ssl_client_socket_openssl.h
diff --git a/net/socket/ssl_client_socket_openssl.h b/net/socket/ssl_client_socket_openssl.h
index ac65710bd1e683c023994fd7aebb914b1605ae50..cf01364c8d0e74ad8a8f7ba603576b2fa2afe5c3 100644
--- a/net/socket/ssl_client_socket_openssl.h
+++ b/net/socket/ssl_client_socket_openssl.h
@@ -95,6 +95,8 @@ class SSLClientSocketOpenSSL : public SSLClientSocket {
virtual int SetReceiveBufferSize(int32 size) OVERRIDE;
virtual int SetSendBufferSize(int32 size) OVERRIDE;
+ void CheckIfSessionFinished();
Ryan Sleevi 2014/08/06 01:31:30 This doesn't need to be public, does it? The stati
mshelley 2014/08/06 03:09:31 Done.
+
protected:
// SSLClientSocket implementation.
virtual scoped_refptr<X509Certificate> GetUnverifiedServerCertificateChain()
@@ -106,6 +108,9 @@ class SSLClientSocketOpenSSL : public SSLClientSocket {
friend class SSLClientSocket;
friend class SSLContext;
+ // Callback that is run by OpenSSL when a session's handshake has finished.
+ static void OnSessionFinishedCallback(const SSL* ssl, int result, int unused);
+
int Init();
void DoReadCallback(int result);
void DoWriteCallback(int result);
@@ -268,6 +273,14 @@ class SSLClientSocketOpenSSL : public SSLClientSocket {
std::string channel_id_cert_;
// True if channel ID extension was negotiated.
bool channel_id_xtn_negotiated_;
+ // Integer indicating the status of this connection's SSL handshake.
+ //
+ // |session_completion_count_| < 2 means that the ssl session associated with
+ // this socket has not been added to the session cache or has not been marked
+ // as good. |session_completion_count_| is incremented when a sesion is added
+ // to the session cache or marked as good, thus |session_completion_count_|
+ // == 2 means that the session is ready for use.
+ int session_completion_count_;
// The request handle for |channel_id_service_|.
ChannelIDService::RequestHandle channel_id_request_handle_;
BoundNetLog net_log_;

Powered by Google App Engine
This is Rietveld 408576698