Index: net/base/host_resolver_impl.cc |
=================================================================== |
--- net/base/host_resolver_impl.cc (revision 85450) |
+++ net/base/host_resolver_impl.cc (working copy) |
@@ -97,6 +97,7 @@ |
// static |
HostResolver* CreateSystemHostResolver(size_t max_concurrent_resolves, |
+ size_t max_retry_attempts, |
NetLog* net_log) { |
// Maximum of 8 concurrent resolver threads. |
// Some routers (or resolvers) appear to start to provide host-not-found if |
@@ -108,8 +109,8 @@ |
max_concurrent_resolves = kDefaultMaxJobs; |
HostResolverImpl* resolver = |
- new HostResolverImpl(NULL, CreateDefaultCache(), |
- max_concurrent_resolves, net_log); |
+ new HostResolverImpl(NULL, CreateDefaultCache(), max_concurrent_resolves, |
+ max_retry_attempts, net_log); |
return resolver; |
} |
@@ -437,10 +438,12 @@ |
// OnCheckForComplete has the potential for starting a new attempt on a |
// different worker thread if none of our outstanding attempts have |
// completed yet. |
- origin_loop_->PostDelayedTask( |
- FROM_HERE, |
- NewRunnableMethod(this, &Job::OnCheckForComplete), |
- unresponsive_delay_.InMilliseconds()); |
+ if (attempt_number_ <= resolver_->max_retry_attempts()) { |
+ origin_loop_->PostDelayedTask( |
+ FROM_HERE, |
+ NewRunnableMethod(this, &Job::OnCheckForComplete), |
+ unresponsive_delay_.InMilliseconds()); |
+ } |
} |
// Cancels the current job. The Job will be orphaned. Any outstanding resolve |
@@ -540,7 +543,7 @@ |
void OnCheckForComplete() { |
DCHECK(origin_loop_->BelongsToCurrentThread()); |
- if (was_cancelled() || was_completed()) |
+ if (was_completed() || was_cancelled()) |
return; |
DCHECK(resolver_); |
@@ -1011,9 +1014,11 @@ |
HostResolverProc* resolver_proc, |
HostCache* cache, |
size_t max_jobs, |
+ size_t max_retry_attempts, |
NetLog* net_log) |
: cache_(cache), |
max_jobs_(max_jobs), |
+ max_retry_attempts_(max_retry_attempts), |
unresponsive_delay_(base::TimeDelta::FromMilliseconds(6000)), |
retry_factor_(2), |
maximum_unresponsive_delay_(base::TimeDelta::FromMilliseconds(60000)), |
@@ -1515,7 +1520,7 @@ |
NULL); |
scoped_refptr<Job> job(new Job(next_job_id_++, this, key, |
- req->request_net_log(), net_log_)); |
+ req->request_net_log(), net_log_)); |
job->AddRequest(req); |
AddOutstandingJob(job); |
job->Start(); |