Index: net/base/backoff_entry.cc |
diff --git a/net/base/backoff_entry.cc b/net/base/backoff_entry.cc |
index b1826b7af469b4d72cfccd6ad849173ceb1f24fe..43037f6d2f89144d6d9b2aa3a150d8dcff1c01f4 100644 |
--- a/net/base/backoff_entry.cc |
+++ b/net/base/backoff_entry.cc |
@@ -134,6 +134,10 @@ base::TimeTicks BackoffEntry::CalculateReleaseTime() const { |
// effective_failure_count - 1) * Uniform(1 - jitter_factor, 1] |
double delay = policy_->initial_delay_ms; |
delay *= pow(policy_->multiply_factor, effective_failure_count - 1); |
+ if (isinf(delay)) { |
+ delay = std::max(policy_->maximum_backoff_ms, |
cbentzel
2014/06/14 15:16:07
maximum_backoff_ms is not always set - so it seems
cbentzel
2014/06/14 15:30:47
Actually, we'd reach integral overflow with this a
Ryan Sleevi
2014/06/16 17:20:47
^ base/basictypes.h has kint64max / kint64min
Nicolas Zea
2014/06/16 20:27:25
Switched to doing all overflow checking via Checke
|
+ static_cast<int64>(policy_->initial_delay_ms)); |
+ } |
delay -= base::RandDouble() * policy_->jitter_factor * delay; |
const int64 kMaxInt64 = std::numeric_limits<int64>::max(); |