diff options
author | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-01 23:54:49 +0000 |
---|---|---|
committer | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-01 23:54:49 +0000 |
commit | 6173a33a7ae279d20227528e5eddf402b5456213 (patch) | |
tree | 90838d23423de0af872ec261dda9a1d613156b4d | |
parent | 1eb867e806171a530545ff5115bca6b0c0a19e27 (diff) | |
download | chromium_src-6173a33a7ae279d20227528e5eddf402b5456213.zip chromium_src-6173a33a7ae279d20227528e5eddf402b5456213.tar.gz chromium_src-6173a33a7ae279d20227528e5eddf402b5456213.tar.bz2 |
Hold a reference to object returned by GetGlobalHostResolver().
This change is to help diagnose bug 29038.
BUG=29038
Review URL: http://codereview.chromium.org/455025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33510 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/net/dns_global.cc | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/chrome/browser/net/dns_global.cc b/chrome/browser/net/dns_global.cc index 970a529..c238a18 100644 --- a/chrome/browser/net/dns_global.cc +++ b/chrome/browser/net/dns_global.cc @@ -450,15 +450,19 @@ void EnsureDnsPrefetchShutdown() { // Stop observing DNS resolutions. Note that dns_master holds a reference // to the global host resolver, so is guaranteed to be live. - GetGlobalHostResolver()->RemoveObserver(&dns_resolution_observer); + global_host_resolver->RemoveObserver(&dns_resolution_observer); + } + if (global_host_resolver) { // TODO(eroman): temp hack for http://crbug.com/15513 - GetGlobalHostResolver()->Shutdown(); - } + global_host_resolver->Shutdown(); - // TODO(eroman): This is a hack so the in process browser tests work if - // BrowserMain() is to be called again. - global_host_resolver = NULL; + global_host_resolver->Release(); // Balances GetGlobalHostResolver(). + + // TODO(eroman): This is a hack so the in process browser tests work if + // BrowserMain() is to be called again. + global_host_resolver = NULL; + } } void FreeDnsPrefetchResources() { @@ -486,13 +490,14 @@ net::HostResolver* GetGlobalHostResolver() { std::string host_and_port = WideToASCII(command_line.GetSwitchValue(switches::kFixedServer)); global_host_resolver = new net::FixedHostResolver(host_and_port); - return global_host_resolver; - } + } else { + global_host_resolver = net::CreateSystemHostResolver(); - global_host_resolver = net::CreateSystemHostResolver(); + if (command_line.HasSwitch(switches::kDisableIPv6)) + global_host_resolver->SetDefaultAddressFamily(net::ADDRESS_FAMILY_IPV4); + } - if (command_line.HasSwitch(switches::kDisableIPv6)) - global_host_resolver->SetDefaultAddressFamily(net::ADDRESS_FAMILY_IPV4); + global_host_resolver->AddRef(); // Balanced by EnsureDnsPrefetchShutdown(). } return global_host_resolver; } |