Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(612)

Unified Diff: net/base/host_resolver_impl.cc

Issue 7011044: Add a command line option to turn off retry attempts to resolve host (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/base/host_resolver_impl.cc
===================================================================
--- net/base/host_resolver_impl.cc (revision 85651)
+++ 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
@@ -107,9 +108,15 @@
if (max_concurrent_resolves == HostResolver::kDefaultParallelism)
max_concurrent_resolves = kDefaultMaxJobs;
+ // Maximum of 4 retry attempts for host resolution.
+ static const size_t kDefaultMaxRetryAttempts = 4u;
+
+ if (max_retry_attempts == HostResolver::kDefaultRetryAttempts)
+ max_retry_attempts = kDefaultMaxRetryAttempts;
+
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 +444,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,16 +549,11 @@
void OnCheckForComplete() {
DCHECK(origin_loop_->BelongsToCurrentThread());
- if (was_cancelled() || was_completed())
+ if (was_completed() || was_cancelled())
return;
DCHECK(resolver_);
- base::TimeDelta unresponsive_delay =
- unresponsive_delay_ * resolver_->retry_factor();
- if (unresponsive_delay >= resolver_->maximum_unresponsive_delay())
- return;
-
- unresponsive_delay_ = unresponsive_delay;
+ unresponsive_delay_ *= resolver_->retry_factor();
StartLookupAttempt();
}
@@ -1011,12 +1015,13 @@
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)),
next_request_id_(0),
next_job_id_(0),
resolver_proc_(resolver_proc),
@@ -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();

Powered by Google App Engine
This is Rietveld 408576698