diff options
author | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-14 05:08:35 +0000 |
---|---|---|
committer | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-14 05:08:35 +0000 |
commit | b8d6e06f4e2f41cb5148582eab2b91a32a7fc83a (patch) | |
tree | 95945a8ad06966370b6d26682655ff815849ccf0 /net/socket | |
parent | 0f5aa0ccd90ffe0ed7910be4afd86f15f71e5fdf (diff) | |
download | chromium_src-b8d6e06f4e2f41cb5148582eab2b91a32a7fc83a.zip chromium_src-b8d6e06f4e2f41cb5148582eab2b91a32a7fc83a.tar.gz chromium_src-b8d6e06f4e2f41cb5148582eab2b91a32a7fc83a.tar.bz2 |
Add some instrumentation to track down a crash.
See if the state machine in SSLClientSocketNSS is failing to cancel the origin bound certificate request.
BUG=113233
Review URL: http://codereview.chromium.org/9383034
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121851 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket')
-rw-r--r-- | net/socket/ssl_client_socket_nss.cc | 11 | ||||
-rw-r--r-- | net/socket/ssl_client_socket_nss.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc index ba07fa4..b47978d 100644 --- a/net/socket/ssl_client_socket_nss.cc +++ b/net/socket/ssl_client_socket_nss.cc @@ -1610,6 +1610,11 @@ int SSLClientSocketNSS::DoGetOBCertComplete(int result) { net_log_.EndEventWithNetErrorCode(NetLog::TYPE_SSL_GET_ORIGIN_BOUND_CERT, result); client_auth_cert_needed_ = false; + + if (ob_cert_request_handle_) { + CHECK(!origin_bound_cert_service_->DebugIsRequestAlive( + ob_cert_request_id_)); + } ob_cert_request_handle_ = NULL; if (result != OK) @@ -2207,6 +2212,8 @@ SECStatus SSLClientSocketNSS::OriginBoundClientAuthHandler( std::vector<uint8> requested_cert_types(cert_types->data, cert_types->data + cert_types->len); net_log_.BeginEvent(NetLog::TYPE_SSL_GET_ORIGIN_BOUND_CERT, NULL); + + CHECK(!ob_cert_request_handle_); int error = origin_bound_cert_service_->GetOriginBoundCert( origin, requested_cert_types, @@ -2218,6 +2225,10 @@ SECStatus SSLClientSocketNSS::OriginBoundClientAuthHandler( &ob_cert_request_handle_); if (error == ERR_IO_PENDING) { + CHECK(ob_cert_request_handle_); + origin_bound_cert_service_->DebugGetRequestId( + ob_cert_request_handle_, &ob_cert_request_id_); + // Asynchronous case. client_auth_cert_needed_ = true; return SECWouldBlock; diff --git a/net/socket/ssl_client_socket_nss.h b/net/socket/ssl_client_socket_nss.h index e9f4f48..ccf762b 100644 --- a/net/socket/ssl_client_socket_nss.h +++ b/net/socket/ssl_client_socket_nss.h @@ -261,6 +261,7 @@ class SSLClientSocketNSS : public SSLClientSocket { std::string ob_private_key_; std::string ob_cert_; OriginBoundCertService::RequestHandle ob_cert_request_handle_; + DebugOBCertRequestId ob_cert_request_id_; // True if NSS has called HandshakeCallback. bool handshake_callback_called_; |