| 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";
|
| + 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));
|
|
|