summaryrefslogtreecommitdiffstats
path: root/net/socket
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-14 05:08:35 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-14 05:08:35 +0000
commitb8d6e06f4e2f41cb5148582eab2b91a32a7fc83a (patch)
tree95945a8ad06966370b6d26682655ff815849ccf0 /net/socket
parent0f5aa0ccd90ffe0ed7910be4afd86f15f71e5fdf (diff)
downloadchromium_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.cc11
-rw-r--r--net/socket/ssl_client_socket_nss.h1
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_;