| Index: chromecast/net/connectivity_checker_impl.cc
|
| diff --git a/chromecast/net/connectivity_checker_impl.cc b/chromecast/net/connectivity_checker_impl.cc
|
| index d10d06a13f40de64aba74f9586ab203f8b48febc..40f56c66e05ce35af32180a5b1c19f03a5d06d68 100644
|
| --- a/chromecast/net/connectivity_checker_impl.cc
|
| +++ b/chromecast/net/connectivity_checker_impl.cc
|
| @@ -28,6 +28,9 @@ const unsigned int kConnectivityPeriodSeconds = 1;
|
| // to offline.
|
| const unsigned int kNumErrorsToNotifyOffline = 3;
|
|
|
| +// Request timeout value in seconds.
|
| +const unsigned int kRequestTimeoutInSeconds = 3;
|
| +
|
| // Default url for connectivity checking.
|
| const char kDefaultConnectivityCheckUrl[] =
|
| "https://clients3.google.com/generate_204";
|
| @@ -65,6 +68,7 @@ void ConnectivityCheckerImpl::Initialize() {
|
|
|
| ConnectivityCheckerImpl::~ConnectivityCheckerImpl() {
|
| DCHECK(task_runner_.get());
|
| + timeout_.Cancel();
|
| net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
|
| task_runner_->DeleteSoon(FROM_HERE, url_request_.release());
|
| task_runner_->DeleteSoon(FROM_HERE, url_request_context_.release());
|
| @@ -106,6 +110,13 @@ void ConnectivityCheckerImpl::Check() {
|
| *connectivity_check_url_, net::MAXIMUM_PRIORITY, this);
|
| url_request_->set_method("HEAD");
|
| url_request_->Start();
|
| +
|
| + timeout_.Reset(base::Bind(&ConnectivityCheckerImpl::OnUrlRequestTimeout,
|
| + this));
|
| + base::MessageLoop::current()->PostDelayedTask(
|
| + FROM_HERE,
|
| + timeout_.callback(),
|
| + base::TimeDelta::FromSeconds(kRequestTimeoutInSeconds));
|
| }
|
|
|
| void ConnectivityCheckerImpl::OnNetworkChanged(
|
| @@ -122,6 +133,7 @@ void ConnectivityCheckerImpl::OnNetworkChanged(
|
| }
|
|
|
| void ConnectivityCheckerImpl::OnResponseStarted(net::URLRequest* request) {
|
| + timeout_.Cancel();
|
| int http_response_code =
|
| (request->status().is_success() &&
|
| request->response_info().headers.get() != NULL)
|
| @@ -141,11 +153,17 @@ void ConnectivityCheckerImpl::OnResponseStarted(net::URLRequest* request) {
|
| OnUrlRequestError();
|
| }
|
|
|
| +void ConnectivityCheckerImpl::OnReadCompleted(net::URLRequest* request,
|
| + int bytes_read) {
|
| + NOTREACHED();
|
| +}
|
| +
|
| void ConnectivityCheckerImpl::OnSSLCertificateError(
|
| net::URLRequest* request,
|
| const net::SSLInfo& ssl_info,
|
| bool fatal) {
|
| LOG(ERROR) << "OnSSLCertificateError";
|
| + timeout_.Cancel();
|
| OnUrlRequestError();
|
| }
|
|
|
| @@ -162,9 +180,9 @@ void ConnectivityCheckerImpl::OnUrlRequestError() {
|
| base::TimeDelta::FromSeconds(kConnectivityPeriodSeconds));
|
| }
|
|
|
| -void ConnectivityCheckerImpl::OnReadCompleted(net::URLRequest* request,
|
| - int bytes_read) {
|
| - NOTREACHED();
|
| +void ConnectivityCheckerImpl::OnUrlRequestTimeout() {
|
| + LOG(ERROR) << "time out";
|
| + OnUrlRequestError();
|
| }
|
|
|
| void ConnectivityCheckerImpl::Cancel() {
|
|
|