diff options
-rw-r--r-- | net/base/host_resolver_proc.cc | 18 | ||||
-rw-r--r-- | net/base/run_all_unittests.cc | 4 | ||||
-rw-r--r-- | net/ocsp/nss_ocsp.cc | 2 |
3 files changed, 17 insertions, 7 deletions
diff --git a/net/base/host_resolver_proc.cc b/net/base/host_resolver_proc.cc index cd6fc12..b12d7590 100644 --- a/net/base/host_resolver_proc.cc +++ b/net/base/host_resolver_proc.cc @@ -77,12 +77,6 @@ int HostResolverProc::ResolveUsingPrevious(const std::string& host, // Keep a timer per calling thread to rate limit the calling of res_ninit. class DnsReloadTimer { public: - DnsReloadTimer() { - tls_index_.Initialize(SlotReturnFunction); - } - - ~DnsReloadTimer() { } - // Check if the timer for the calling thread has expired. When no // timer exists for the calling thread, create one. bool Expired() { @@ -112,6 +106,18 @@ class DnsReloadTimer { } private: + friend struct DefaultSingletonTraits<DnsReloadTimer>; + + DnsReloadTimer() { + // During testing the DnsReloadTimer Singleton may be created and destroyed + // multiple times. Initialize the ThreadLocalStorage slot only once. + if (!tls_index_.initialized()) + tls_index_.Initialize(SlotReturnFunction); + } + + ~DnsReloadTimer() { + } + // We use thread local storage to identify which base::TimeTicks to // interact with. static ThreadLocalStorage::Slot tls_index_ ; diff --git a/net/base/run_all_unittests.cc b/net/base/run_all_unittests.cc index 2bed0b7..178bd5b 100644 --- a/net/base/run_all_unittests.cc +++ b/net/base/run_all_unittests.cc @@ -30,5 +30,7 @@ #include "net/base/net_test_suite.h" int main(int argc, char** argv) { - return NetTestSuite(argc, argv).Run(); + NetTestSuite test_suite(argc, argv); + test_suite.EnforceTestIsolation(); + return test_suite.Run(); } diff --git a/net/ocsp/nss_ocsp.cc b/net/ocsp/nss_ocsp.cc index 8ee1e96..a82f141 100644 --- a/net/ocsp/nss_ocsp.cc +++ b/net/ocsp/nss_ocsp.cc @@ -57,6 +57,8 @@ class OCSPInitSingleton : public MessageLoop::DestructionObserver { friend struct DefaultSingletonTraits<OCSPInitSingleton>; OCSPInitSingleton(); virtual ~OCSPInitSingleton() { + if (io_loop_) + io_loop_->RemoveDestructionObserver(this); request_context_ = NULL; } |