| 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();
|
|
|