summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-17 03:37:51 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-17 03:37:51 +0000
commit962b98214d0ca8e8db14ae83ccb79667ec440eac (patch)
tree25a805a00af4dbafb4dcf47200ec355f1a43be51 /net
parent3aee726050eeb2b29f26abf7da806ba1d1af2389 (diff)
downloadchromium_src-962b98214d0ca8e8db14ae83ccb79667ec440eac.zip
chromium_src-962b98214d0ca8e8db14ae83ccb79667ec440eac.tar.gz
chromium_src-962b98214d0ca8e8db14ae83ccb79667ec440eac.tar.bz2
Add a command line flag to change the default number of parallel DNS requests issued by chrome.
--host-resolver-parallelism=XXX This is a useful debugging tool, since for some users too many parallel DNS requests results in spurious DNS failures from their resolver. BUG=44489 Review URL: http://codereview.chromium.org/3019007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52802 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/base/host_resolver.h10
-rw-r--r--net/base/host_resolver_impl.cc10
-rw-r--r--net/proxy/proxy_script_fetcher_unittest.cc3
-rw-r--r--net/socket/ssl_client_socket_unittest.cc3
-rw-r--r--net/socket/ssl_test_util.cc3
-rw-r--r--net/socket/tcp_client_socket_unittest.cc3
-rw-r--r--net/socket/tcp_pinger_unittest.cc6
-rw-r--r--net/tools/fetch/fetch_client.cc2
-rw-r--r--net/url_request/url_request_unittest.h6
9 files changed, 33 insertions, 13 deletions
diff --git a/net/base/host_resolver.h b/net/base/host_resolver.h
index 1e1fb0b..895ffc2 100644
--- a/net/base/host_resolver.h
+++ b/net/base/host_resolver.h
@@ -131,6 +131,11 @@ class HostResolver : public base::RefCounted<HostResolver> {
// Opaque type used to cancel a request.
typedef void* RequestHandle;
+ // This value can be passed into CreateSystemHostResolver as the
+ // |max_concurrent_resolves| parameter. It will select a default level of
+ // concurrency.
+ static const size_t kDefaultParallelism = 0;
+
// Resolves the given hostname (or IP address literal), filling out the
// |addresses| object upon success. The |info.port| parameter will be set as
// the sin(6)_port field of the sockaddr_in{6} struct. Returns OK if
@@ -238,7 +243,10 @@ class SingleRequestHostResolver {
// Creates a HostResolver implementation that queries the underlying system.
// (Except if a unit-test has changed the global HostResolverProc using
// ScopedHostResolverProc to intercept requests to the system).
-HostResolver* CreateSystemHostResolver();
+// |max_concurrent_resolves| is how many resolve requests will be allowed to
+// run in parallel. Pass HostResolver::kDefaultParallelism to choose a
+// default value.
+HostResolver* CreateSystemHostResolver(size_t max_concurrent_resolves);
} // namespace net
diff --git a/net/base/host_resolver_impl.cc b/net/base/host_resolver_impl.cc
index 9b19436..ffba57f 100644
--- a/net/base/host_resolver_impl.cc
+++ b/net/base/host_resolver_impl.cc
@@ -52,13 +52,17 @@ HostCache* CreateDefaultCache() {
} // anonymous namespace
-HostResolver* CreateSystemHostResolver() {
+HostResolver* CreateSystemHostResolver(size_t max_concurrent_resolves) {
// Maximum of 50 concurrent threads.
// TODO(eroman): Adjust this, do some A/B experiments.
- static const size_t kMaxJobs = 50u;
+ static const size_t kDefaultMaxJobs = 50u;
+
+ if (max_concurrent_resolves == HostResolver::kDefaultParallelism)
+ max_concurrent_resolves = kDefaultMaxJobs;
HostResolverImpl* resolver =
- new HostResolverImpl(NULL, CreateDefaultCache(), kMaxJobs);
+ new HostResolverImpl(NULL, CreateDefaultCache(),
+ max_concurrent_resolves);
return resolver;
}
diff --git a/net/proxy/proxy_script_fetcher_unittest.cc b/net/proxy/proxy_script_fetcher_unittest.cc
index c843739..e0e64c9 100644
--- a/net/proxy/proxy_script_fetcher_unittest.cc
+++ b/net/proxy/proxy_script_fetcher_unittest.cc
@@ -32,7 +32,8 @@ class RequestContext : public URLRequestContext {
public:
RequestContext() {
net::ProxyConfig no_proxy;
- host_resolver_ = net::CreateSystemHostResolver();
+ host_resolver_ =
+ net::CreateSystemHostResolver(net::HostResolver::kDefaultParallelism);
proxy_service_ = net::ProxyService::CreateFixed(no_proxy);
ssl_config_service_ = new net::SSLConfigServiceDefaults;
diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc
index 68016e0..2f7526a 100644
--- a/net/socket/ssl_client_socket_unittest.cc
+++ b/net/socket/ssl_client_socket_unittest.cc
@@ -26,7 +26,8 @@ const net::SSLConfig kDefaultSSLConfig;
class SSLClientSocketTest : public PlatformTest {
public:
SSLClientSocketTest()
- : resolver_(net::CreateSystemHostResolver()),
+ : resolver_(net::CreateSystemHostResolver(
+ net::HostResolver::kDefaultParallelism)),
socket_factory_(net::ClientSocketFactory::GetDefaultFactory()) {
}
diff --git a/net/socket/ssl_test_util.cc b/net/socket/ssl_test_util.cc
index f2999f0..4fa6b9b 100644
--- a/net/socket/ssl_test_util.cc
+++ b/net/socket/ssl_test_util.cc
@@ -229,7 +229,8 @@ bool TestServerLauncher::WaitToStart(const std::string& host_name, int port) {
// Verify that the webserver is actually started.
// Otherwise tests can fail if they run faster than Python can start.
net::AddressList addr;
- scoped_refptr<net::HostResolver> resolver(net::CreateSystemHostResolver());
+ scoped_refptr<net::HostResolver> resolver(
+ net::CreateSystemHostResolver(net::HostResolver::kDefaultParallelism));
net::HostResolver::RequestInfo info(host_name, port);
int rv = resolver->Resolve(info, &addr, NULL, NULL, BoundNetLog());
if (rv != net::OK)
diff --git a/net/socket/tcp_client_socket_unittest.cc b/net/socket/tcp_client_socket_unittest.cc
index 52cdb88..638e887 100644
--- a/net/socket/tcp_client_socket_unittest.cc
+++ b/net/socket/tcp_client_socket_unittest.cc
@@ -89,7 +89,8 @@ void TCPClientSocketTest::SetUp() {
listen_port_ = port;
AddressList addr;
- scoped_refptr<HostResolver> resolver(CreateSystemHostResolver());
+ scoped_refptr<HostResolver> resolver(
+ CreateSystemHostResolver(HostResolver::kDefaultParallelism));
HostResolver::RequestInfo info("localhost", listen_port_);
int rv = resolver->Resolve(info, &addr, NULL, NULL, BoundNetLog());
CHECK_EQ(rv, OK);
diff --git a/net/socket/tcp_pinger_unittest.cc b/net/socket/tcp_pinger_unittest.cc
index 63e0045..c415ac3 100644
--- a/net/socket/tcp_pinger_unittest.cc
+++ b/net/socket/tcp_pinger_unittest.cc
@@ -65,7 +65,8 @@ void TCPPingerTest::SetUp() {
TEST_F(TCPPingerTest, Ping) {
net::AddressList addr;
- scoped_refptr<net::HostResolver> resolver(net::CreateSystemHostResolver());
+ scoped_refptr<net::HostResolver> resolver(
+ net::CreateSystemHostResolver(net::HostResolver::kDefaultParallelism));
net::HostResolver::RequestInfo info("localhost", listen_port_);
int rv = resolver->Resolve(info, &addr, NULL, NULL, net::BoundNetLog());
@@ -78,7 +79,8 @@ TEST_F(TCPPingerTest, Ping) {
TEST_F(TCPPingerTest, PingFail) {
net::AddressList addr;
- scoped_refptr<net::HostResolver> resolver(net::CreateSystemHostResolver());
+ scoped_refptr<net::HostResolver> resolver(
+ net::CreateSystemHostResolver(net::HostResolver::kDefaultParallelism));
// "Kill" "server"
listen_sock_ = NULL;
diff --git a/net/tools/fetch/fetch_client.cc b/net/tools/fetch/fetch_client.cc
index 9e2a21c..8863dd7 100644
--- a/net/tools/fetch/fetch_client.cc
+++ b/net/tools/fetch/fetch_client.cc
@@ -133,7 +133,7 @@ int main(int argc, char**argv) {
MessageLoop loop(MessageLoop::TYPE_IO);
scoped_refptr<net::HostResolver> host_resolver(
- net::CreateSystemHostResolver());
+ net::CreateSystemHostResolver(net::HostResolver::kDefaultParallelism));
scoped_refptr<net::ProxyService> proxy_service(
net::ProxyService::CreateNull());
diff --git a/net/url_request/url_request_unittest.h b/net/url_request/url_request_unittest.h
index 0dfa766..f8fee49 100644
--- a/net/url_request/url_request_unittest.h
+++ b/net/url_request/url_request_unittest.h
@@ -131,13 +131,15 @@ class TestCookiePolicy : public net::CookiePolicy {
class TestURLRequestContext : public URLRequestContext {
public:
TestURLRequestContext() {
- host_resolver_ = net::CreateSystemHostResolver();
+ host_resolver_ =
+ net::CreateSystemHostResolver(net::HostResolver::kDefaultParallelism);
proxy_service_ = net::ProxyService::CreateNull();
Init();
}
explicit TestURLRequestContext(const std::string& proxy) {
- host_resolver_ = net::CreateSystemHostResolver();
+ host_resolver_ =
+ net::CreateSystemHostResolver(net::HostResolver::kDefaultParallelism);
net::ProxyConfig proxy_config;
proxy_config.proxy_rules().ParseFromString(proxy);
proxy_service_ = net::ProxyService::CreateFixed(proxy_config);