From d83eb5d7d0c2a90a374fafb8e02c6800503cbda6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 14 Oct 2010 17:28:45 -0700 Subject: [PATCH] Bug 517584 - Fix orange in test for bug 480619. r=dwitte a=blocking-fennec --- netwerk/protocol/http/nsHttpHandler.cpp | 6 ++++++ security/manager/ssl/src/nsSDR.cpp | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp index 841502a456d..1718a418389 100644 --- a/netwerk/protocol/http/nsHttpHandler.cpp +++ b/netwerk/protocol/http/nsHttpHandler.cpp @@ -330,6 +330,7 @@ nsHttpHandler::Init() mObserverService->AddObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, PR_TRUE); mObserverService->AddObserver(this, "net:clear-active-logins", PR_TRUE); mObserverService->AddObserver(this, NS_PRIVATE_BROWSING_SWITCH_TOPIC, PR_TRUE); + mObserverService->AddObserver(this, "net:prune-dead-connections", PR_TRUE); } return NS_OK; @@ -1644,6 +1645,11 @@ nsHttpHandler::Observe(nsISupports *subject, else if (NS_LITERAL_STRING(NS_PRIVATE_BROWSING_LEAVE).Equals(data)) mInPrivateBrowsingMode = PR_FALSE; } + else if (strcmp(topic, "net:prune-dead-connections") == 0) { + if (mConnMgr) { + mConnMgr->PruneDeadConnections(); + } + } return NS_OK; } diff --git a/security/manager/ssl/src/nsSDR.cpp b/security/manager/ssl/src/nsSDR.cpp index f00392c2af4..ffa3fe7c07e 100644 --- a/security/manager/ssl/src/nsSDR.cpp +++ b/security/manager/ssl/src/nsSDR.cpp @@ -361,7 +361,16 @@ LogoutAndTeardown() SSL_ClearSessionCache(); } - return nssComponent->LogoutAuthenticatedPK11(); + rv = nssComponent->LogoutAuthenticatedPK11(); + + // After we just logged out, we need to prune dead connections to make + // sure that all connections that should be stopped, are stopped. See + // bug 517584. + nsCOMPtr os = mozilla::services::GetObserverService(); + if (os) + os->NotifyObservers(nsnull, "net:prune-dead-connections", nsnull); + + return rv; } /* void setWindow(in nsISupports w); */