summaryrefslogtreecommitdiffstats
path: root/net/dns/dns_config_service_win.cc
diff options
context:
space:
mode:
authorszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-14 04:28:37 +0000
committerszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-14 04:28:37 +0000
commitd6f9e9cb7d9a173b35eeea644db82baf8ce7ced1 (patch)
tree78d8054c7c435c5e719554b9136d5b5f69f51cc8 /net/dns/dns_config_service_win.cc
parentb99af97d00ed940e6fe44117c39a291cf387e82c (diff)
downloadchromium_src-d6f9e9cb7d9a173b35eeea644db82baf8ce7ced1.zip
chromium_src-d6f9e9cb7d9a173b35eeea644db82baf8ce7ced1.tar.gz
chromium_src-d6f9e9cb7d9a173b35eeea644db82baf8ce7ced1.tar.bz2
[net/dns] Refactor DnsHostsReader to reduce unnecessary inheritance.
TEST=./net_unittests --gtest_filter=DnsConfigService.* Review URL: https://chromiumcodereview.appspot.com/10536150 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142092 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/dns/dns_config_service_win.cc')
-rw-r--r--net/dns/dns_config_service_win.cc38
1 files changed, 19 insertions, 19 deletions
diff --git a/net/dns/dns_config_service_win.cc b/net/dns/dns_config_service_win.cc
index af609f0..0c2e2c1 100644
--- a/net/dns/dns_config_service_win.cc
+++ b/net/dns/dns_config_service_win.cc
@@ -24,6 +24,7 @@
#include "googleurl/src/url_canon.h"
#include "net/base/net_util.h"
#include "net/base/network_change_notifier.h"
+#include "net/dns/dns_hosts.h"
#include "net/dns/dns_protocol.h"
#include "net/dns/serial_worker.h"
@@ -380,7 +381,7 @@ class DnsConfigServiceWin::ConfigReader : public SerialWorker {
if (success_) {
service_->OnConfigRead(dns_config_);
} else {
- LOG(WARNING) << "Failed to read config.";
+ LOG(WARNING) << "Failed to read DnsConfig.";
}
}
@@ -393,15 +394,15 @@ class DnsConfigServiceWin::ConfigReader : public SerialWorker {
// An extension for DnsHostsReader which also watches the HOSTS file,
// reads local name from GetComputerNameEx, local IP from GetAdaptersAddresses,
// and observes changes to local IP address.
-class DnsConfigServiceWin::HostsReader : public DnsHostsReader {
+class DnsConfigServiceWin::HostsReader : public SerialWorker {
public:
explicit HostsReader(DnsConfigServiceWin* service)
- : DnsHostsReader(GetHostsPath()), service_(service) {
+ : path_(GetHostsPath()), service_(service) {
}
private:
virtual void DoWork() OVERRIDE {
- DnsHostsReader::DoWork();
+ success_ = ParseHostsFile(path_, &hosts_);
if (!success_)
return;
@@ -420,12 +421,10 @@ class DnsConfigServiceWin::HostsReader : public DnsHostsReader {
kIPv6Localhost + arraysize(kIPv6Localhost));
// This does not override any pre-existing entries from the HOSTS file.
- dns_hosts_.insert(
- std::make_pair(DnsHostsKey("localhost", ADDRESS_FAMILY_IPV4),
- loopback_ipv4));
- dns_hosts_.insert(
- std::make_pair(DnsHostsKey("localhost", ADDRESS_FAMILY_IPV6),
- loopback_ipv6));
+ hosts_.insert(std::make_pair(DnsHostsKey("localhost", ADDRESS_FAMILY_IPV4),
+ loopback_ipv4));
+ hosts_.insert(std::make_pair(DnsHostsKey("localhost", ADDRESS_FAMILY_IPV6),
+ loopback_ipv6));
WCHAR buffer[MAX_PATH];
DWORD size = MAX_PATH;
@@ -438,9 +437,9 @@ class DnsConfigServiceWin::HostsReader : public DnsHostsReader {
StringToLowerASCII(&localname);
bool have_ipv4 =
- dns_hosts_.count(DnsHostsKey(localname, ADDRESS_FAMILY_IPV4)) > 0;
+ hosts_.count(DnsHostsKey(localname, ADDRESS_FAMILY_IPV4)) > 0;
bool have_ipv6 =
- dns_hosts_.count(DnsHostsKey(localname, ADDRESS_FAMILY_IPV6)) > 0;
+ hosts_.count(DnsHostsKey(localname, ADDRESS_FAMILY_IPV6)) > 0;
if (have_ipv4 && have_ipv6) {
success_ = true;
@@ -476,29 +475,30 @@ class DnsConfigServiceWin::HostsReader : public DnsHostsReader {
}
if (!have_ipv4 && (ipe.GetFamily() == AF_INET)) {
have_ipv4 = true;
- dns_hosts_[DnsHostsKey(localname, ADDRESS_FAMILY_IPV4)] =
- ipe.address();
+ hosts_[DnsHostsKey(localname, ADDRESS_FAMILY_IPV4)] = ipe.address();
} else if (!have_ipv6 && (ipe.GetFamily() == AF_INET6)) {
have_ipv6 = true;
- dns_hosts_[DnsHostsKey(localname, ADDRESS_FAMILY_IPV6)] =
- ipe.address();
+ hosts_[DnsHostsKey(localname, ADDRESS_FAMILY_IPV6)] = ipe.address();
}
}
}
-
success_ = true;
}
virtual void OnWorkFinished() OVERRIDE {
DCHECK(loop()->BelongsToCurrentThread());
if (success_) {
- service_->OnHostsRead(dns_hosts_);
+ service_->OnHostsRead(hosts_);
} else {
- LOG(WARNING) << "Failed to read hosts.";
+ LOG(WARNING) << "Failed to read DnsHosts.";
}
}
+ const FilePath path_;
DnsConfigServiceWin* service_;
+ // Written in DoWork, read in OnWorkFinished, no locking necessary.
+ DnsHosts hosts_;
+ bool success_;
DISALLOW_COPY_AND_ASSIGN(HostsReader);
};