Chromium Code Reviews| Index: chromecast/net/connectivity_checker.cc |
| diff --git a/chromecast/net/connectivity_checker.cc b/chromecast/net/connectivity_checker.cc |
| index de3081291f3e2e71b2b25757b05af569871d756f..95c4a57cd01306ff411cf039cbc614f7186f765f 100644 |
| --- a/chromecast/net/connectivity_checker.cc |
| +++ b/chromecast/net/connectivity_checker.cc |
| @@ -21,12 +21,12 @@ namespace chromecast { |
| namespace { |
| -// How often connectivity checks are performed in seconds |
| +// How often connectivity checks are performed in seconds. |
| const unsigned int kConnectivityPeriodSeconds = 1; |
| -// Number of consecutive bad responses received before connectivity status is |
| -// changed to offline |
| -const unsigned int kNumBadResponses = 3; |
| +// Number of consecutive connectivity check errors before status is changed |
| +// to offline. |
| +const unsigned int kNumErrorsToNotifyOffline = 3; |
| // Default url for connectivity checking. |
| const char kDefaultConnectivityCheckUrl[] = |
| @@ -40,7 +40,7 @@ ConnectivityChecker::ConnectivityChecker( |
| new ObserverListThreadSafe<ConnectivityObserver>()), |
| loop_proxy_(loop_proxy), |
| connected_(false), |
| - bad_responses_(0) { |
| + check_errors_(0) { |
| DCHECK(loop_proxy_.get()); |
| loop_proxy->PostTask(FROM_HERE, |
| base::Bind(&ConnectivityChecker::Initialize, this)); |
| @@ -105,7 +105,7 @@ void ConnectivityChecker::Check() { |
| } |
| DCHECK(url_request_context_.get()); |
| - // Don't check connectivity if network is offline, because internet could be |
| + // Don't check connectivity if network is offline, because Internet could be |
| // accessible via netifs ignored. |
| if (net::NetworkChangeNotifier::IsOffline()) |
| return; |
| @@ -151,19 +151,29 @@ void ConnectivityChecker::OnResponseStarted(net::URLRequest* request) { |
| if (http_response_code < 400) { |
| VLOG(1) << "Connectivity check succeeded"; |
| - bad_responses_ = 0; |
| + check_errors_ = 0; |
| SetConnectivity(true); |
| return; |
| } |
| - |
| VLOG(1) << "Connectivity check failed: " << http_response_code; |
| - ++bad_responses_; |
| - if (bad_responses_ > kNumBadResponses) { |
| - bad_responses_ = kNumBadResponses; |
| + OnUrlRequestError(); |
| +} |
| + |
| +void ConnectivityChecker::OnSSLCertificateError(net::URLRequest* request, |
| + const net::SSLInfo& ssl_info, |
| + bool fatal) { |
| + LOG(ERROR) << "OnSSLCertificateError"; |
|
derekjchow1
2015/05/19 17:08:47
Would VLOG be more appropriate (how often will thi
wzhong
2015/05/19 17:27:05
It should be happening in very rare circumstances
|
| + OnUrlRequestError(); |
| +} |
| + |
| +void ConnectivityChecker::OnUrlRequestError() { |
| + ++check_errors_; |
| + if (check_errors_ > kNumErrorsToNotifyOffline) { |
| + check_errors_ = kNumErrorsToNotifyOffline; |
| SetConnectivity(false); |
| } |
| - |
| - // Check again |
| + url_request_.reset(NULL); |
| + // Check again. |
| loop_proxy_->PostDelayedTask( |
| FROM_HERE, base::Bind(&ConnectivityChecker::Check, this), |
| base::TimeDelta::FromSeconds(kConnectivityPeriodSeconds)); |