summaryrefslogtreecommitdiffstats
path: root/chrome/browser/net/dns_global.cc
diff options
context:
space:
mode:
authorericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-26 22:06:52 +0000
committerericroman@google.com <ericroman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-26 22:06:52 +0000
commit862a92ee0afc1be6470beed3e19465c24da223e2 (patch)
treedec2efaa94cf3e1eae580599e87f84e7af082594 /chrome/browser/net/dns_global.cc
parentf816c01e9c6f6f0365ba80ba3f661e38461a0537 (diff)
downloadchromium_src-862a92ee0afc1be6470beed3e19465c24da223e2.zip
chromium_src-862a92ee0afc1be6470beed3e19465c24da223e2.tar.gz
chromium_src-862a92ee0afc1be6470beed3e19465c24da223e2.tar.bz2
Make net::HostResolver refcounted.
This way it can be properly shared between the url request contexts, and the dns prefetcher, and dns observer. BUG=http://crbug.com/14664 TEST=existing unit tests. Review URL: http://codereview.chromium.org/149053 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19425 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/net/dns_global.cc')
-rw-r--r--chrome/browser/net/dns_global.cc16
1 files changed, 6 insertions, 10 deletions
diff --git a/chrome/browser/net/dns_global.cc b/chrome/browser/net/dns_global.cc
index 9e4c8f6..4b821c6 100644
--- a/chrome/browser/net/dns_global.cc
+++ b/chrome/browser/net/dns_global.cc
@@ -435,9 +435,13 @@ void InitDnsPrefetch(size_t max_concurrent, PrefService* user_prefs) {
}
void EnsureDnsPrefetchShutdown() {
- if (NULL != dns_master)
+ if (NULL != dns_master) {
dns_master->Shutdown();
- FreeGlobalHostResolver();
+
+ // 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);
+ }
}
void FreeDnsPrefetchResources() {
@@ -469,14 +473,6 @@ net::HostResolver* GetGlobalHostResolver() {
return global_host_resolver;
}
-void FreeGlobalHostResolver() {
- if (global_host_resolver) {
- // Called from IO thread.
- delete global_host_resolver;
- global_host_resolver = NULL;
- }
-}
-
//------------------------------------------------------------------------------
// Functions to handle saving of hostnames from one session to the next, to
// expedite startup times.