summaryrefslogtreecommitdiffstats
path: root/chrome/browser/io_thread.cc
diff options
context:
space:
mode:
authoragayev@chromium.org <agayev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-28 17:51:19 +0000
committeragayev@chromium.org <agayev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-28 17:51:19 +0000
commit2258c1c968ab008aa0bc75f2cbe56b2249194aff (patch)
tree72f799611e613f40c5e26bf8adb7622356edcbf9 /chrome/browser/io_thread.cc
parentd7b99393eb462ee93633028cfda04d33e8c37904 (diff)
downloadchromium_src-2258c1c968ab008aa0bc75f2cbe56b2249194aff.zip
chromium_src-2258c1c968ab008aa0bc75f2cbe56b2249194aff.tar.gz
chromium_src-2258c1c968ab008aa0bc75f2cbe56b2249194aff.tar.bz2
Initial support for built-in DNS resolver/cache.
BUG=60149 TEST=None Review URL: http://codereview.chromium.org/4216001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64271 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/io_thread.cc')
-rw-r--r--chrome/browser/io_thread.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
index f4f92ba..f1cb24b 100644
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -21,6 +21,7 @@
#include "chrome/browser/net/passive_log_collector.h"
#include "chrome/browser/net/predictor_api.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/net/raw_host_resolver_proc.h"
#include "chrome/common/net/url_fetcher.h"
#include "net/base/dnsrr_resolver.h"
#include "net/base/host_cache.h"
@@ -87,8 +88,24 @@ net::HostResolver* CreateGlobalHostResolver(net::NetLog* net_log) {
parallelism = 20;
}
+ // Use the specified DNS server for doing raw resolutions if requested
+ // from the command-line.
+ scoped_refptr<net::HostResolverProc> resolver_proc;
+ if (command_line.HasSwitch(switches::kDnsServer)) {
+ std::string dns_ip_string =
+ command_line.GetSwitchValueASCII(switches::kDnsServer);
+ net::IPAddressNumber dns_ip_number;
+ if (net::ParseIPLiteralToNumber(dns_ip_string, &dns_ip_number)) {
+ resolver_proc =
+ new chrome_common_net::RawHostResolverProc(dns_ip_number, NULL);
+ } else {
+ LOG(ERROR) << "Invalid IP address specified for --dns-server: "
+ << dns_ip_string;
+ }
+ }
+
net::HostResolver* global_host_resolver =
- net::CreateSystemHostResolver(parallelism, net_log);
+ net::CreateSystemHostResolver(parallelism, resolver_proc.get(), net_log);
// Determine if we should disable IPv6 support.
if (!command_line.HasSwitch(switches::kEnableIPv6)) {