Chromium Code Reviews| Index: net/dns/host_resolver_impl.cc |
| diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc |
| index bc1617c227e73598daa63a71372020f459e9d0c1..e35e45b6df37325fc61974af0abacd4fc787a570 100644 |
| --- a/net/dns/host_resolver_impl.cc |
| +++ b/net/dns/host_resolver_impl.cc |
| @@ -65,6 +65,10 @@ namespace net { |
| namespace { |
| +// Default delay between calls to the system resolver for the same hostname. |
| +// (Can be overridden by field trial.) |
| +const int64_t kDnsDefaultUnresponsiveDelayMs = 6000; |
| + |
| // Limit the size of hostnames that will be resolved to combat issues in |
| // some platform's resolvers. |
| const size_t kMaxHostLength = 4096; |
| @@ -487,6 +491,13 @@ class PriorityTracker { |
| size_t counts_[NUM_PRIORITIES]; |
| }; |
| +base::TimeDelta GetUnresponsiveDelay( |
|
Randy Smith (Not in Mondays)
2016/03/16 20:11:07
Same comment as before (up to you, but simple enou
Deprecated (see juliatuttle)
2016/03/17 16:29:46
Done.
|
| + NetworkChangeNotifier::ConnectionType type) { |
| + return GetTimeDeltaForConnectionTypeFromFieldTrialOrDefault( |
| + "DnsUnresponsiveDelayMsByConnectionType", |
| + base::TimeDelta::FromMilliseconds(kDnsDefaultUnresponsiveDelayMs), type); |
| +} |
| + |
| } // namespace |
| //----------------------------------------------------------------------------- |
| @@ -1836,7 +1847,8 @@ HostResolverImpl::ProcTaskParams::ProcTaskParams( |
| size_t max_retry_attempts) |
| : resolver_proc(resolver_proc), |
| max_retry_attempts(max_retry_attempts), |
| - unresponsive_delay(base::TimeDelta::FromMilliseconds(6000)), |
| + unresponsive_delay( |
| + base::TimeDelta::FromMilliseconds(kDnsDefaultUnresponsiveDelayMs)), |
| retry_factor(2) { |
| // Maximum of 4 retry attempts for host resolution. |
| static const size_t kDefaultMaxRetryAttempts = 4u; |
| @@ -1878,12 +1890,15 @@ HostResolverImpl::HostResolverImpl(const Options& options, NetLog* net_log) |
| new LoopbackProbeJob(weak_ptr_factory_.GetWeakPtr()); |
| #endif |
| NetworkChangeNotifier::AddIPAddressObserver(this); |
| + NetworkChangeNotifier::AddConnectionTypeObserver(this); |
| NetworkChangeNotifier::AddDNSObserver(this); |
| #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \ |
| !defined(OS_ANDROID) |
| EnsureDnsReloaderInit(); |
| #endif |
| + OnConnectionTypeChanged(NetworkChangeNotifier::GetConnectionType()); |
| + |
| { |
| DnsConfig dns_config; |
| NetworkChangeNotifier::GetDnsConfig(&dns_config); |
| @@ -1903,6 +1918,7 @@ HostResolverImpl::~HostResolverImpl() { |
| STLDeleteValues(&jobs_); |
| NetworkChangeNotifier::RemoveIPAddressObserver(this); |
| + NetworkChangeNotifier::RemoveConnectionTypeObserver(this); |
| NetworkChangeNotifier::RemoveDNSObserver(this); |
| } |
| @@ -2341,6 +2357,11 @@ void HostResolverImpl::OnIPAddressChanged() { |
| // |this| may be deleted inside AbortAllInProgressJobs(). |
| } |
| +void HostResolverImpl::OnConnectionTypeChanged( |
| + NetworkChangeNotifier::ConnectionType type) { |
| + proc_params_.unresponsive_delay = GetUnresponsiveDelay(type); |
| +} |
| + |
| void HostResolverImpl::OnInitialDNSConfigRead() { |
| UpdateDNSConfig(false); |
| } |