diff options
author | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-26 02:55:33 +0000 |
---|---|---|
committer | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-26 02:55:33 +0000 |
commit | d5f869a488437599c08a5027795a1045baa74452 (patch) | |
tree | 3d7b0f7dafdf4cb34891e6b3840f9ac5100d199a /net/dns/dns_session.cc | |
parent | b5f5c45835ae1820a89180ee528e79da483ebbba (diff) | |
download | chromium_src-d5f869a488437599c08a5027795a1045baa74452.zip chromium_src-d5f869a488437599c08a5027795a1045baa74452.tar.gz chromium_src-d5f869a488437599c08a5027795a1045baa74452.tar.bz2 |
[net/dns] Limit maximum timeout after backoff to 5s.
Intermittent network issues could result in timeouts in excess
of 30s which puts HostResolverImpl in a virtually stalled state.
This CL caps the maximum time spent waiting on a single DNS
query to 5s, although resolving a hostname could still take long
time due to suffix search and nameserver fallback.
BUG=110197,177558
Review URL: https://chromiumcodereview.appspot.com/12330115
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184567 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/dns/dns_session.cc')
-rw-r--r-- | net/dns/dns_session.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/dns/dns_session.cc b/net/dns/dns_session.cc index 0b2e49b..56e0b2e 100644 --- a/net/dns/dns_session.cc +++ b/net/dns/dns_session.cc @@ -56,7 +56,9 @@ int DnsSession::NextFirstServerIndex() { base::TimeDelta DnsSession::NextTimeout(int attempt) { // The timeout doubles every full round (each nameserver once). // TODO(szym): Adapt timeout to observed RTT. http://crbug.com/110197 - return config_.timeout * (1 << (attempt / config_.nameservers.size())); + const base::TimeDelta kMaxTimeout = base::TimeDelta::FromSeconds(5); + unsigned num_backoffs = attempt / config_.nameservers.size(); + return std::min(config_.timeout * (1 << num_backoffs), kMaxTimeout); } // Allocate a socket, already connected to the server address. |