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

Unified Diff: chromecast/net/connectivity_checker_impl.cc

Issue 1169163002: Add timeout check for connectivity_checker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add timeout check for connectivity_checker. Created 5 years, 6 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
« no previous file with comments | « chromecast/net/connectivity_checker_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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() {
« no previous file with comments | « chromecast/net/connectivity_checker_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698