diff options
author | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-17 03:37:51 +0000 |
---|---|---|
committer | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-17 03:37:51 +0000 |
commit | 962b98214d0ca8e8db14ae83ccb79667ec440eac (patch) | |
tree | 25a805a00af4dbafb4dcf47200ec355f1a43be51 /net | |
parent | 3aee726050eeb2b29f26abf7da806ba1d1af2389 (diff) | |
download | chromium_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.h | 10 | ||||
-rw-r--r-- | net/base/host_resolver_impl.cc | 10 | ||||
-rw-r--r-- | net/proxy/proxy_script_fetcher_unittest.cc | 3 | ||||
-rw-r--r-- | net/socket/ssl_client_socket_unittest.cc | 3 | ||||
-rw-r--r-- | net/socket/ssl_test_util.cc | 3 | ||||
-rw-r--r-- | net/socket/tcp_client_socket_unittest.cc | 3 | ||||
-rw-r--r-- | net/socket/tcp_pinger_unittest.cc | 6 | ||||
-rw-r--r-- | net/tools/fetch/fetch_client.cc | 2 | ||||
-rw-r--r-- | net/url_request/url_request_unittest.h | 6 |
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); |