summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-01 23:54:49 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-01 23:54:49 +0000
commit6173a33a7ae279d20227528e5eddf402b5456213 (patch)
tree90838d23423de0af872ec261dda9a1d613156b4d
parent1eb867e806171a530545ff5115bca6b0c0a19e27 (diff)
downloadchromium_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.cc27
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;
}