Introduce ERR_NETWORK_CHANGED and allow URLFetcher to automatically retry on that error.
BUG=164363
Review URL: https://codereview.chromium.org/11464028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@173227 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
index 0880724..3e9cd824d 100644
--- a/net/socket/client_socket_pool_base.cc
+++ b/net/socket/client_socket_pool_base.cc
@@ -189,7 +189,7 @@
// Clean up any idle sockets and pending connect jobs. Assert that we have no
// remaining active sockets or pending requests. They should have all been
// cleaned up prior to |this| being destroyed.
- Flush();
+ FlushWithError(ERR_ABORTED);
DCHECK(group_map_.empty());
DCHECK(pending_callback_map_.empty());
DCHECK_EQ(0, connecting_socket_count_);
@@ -903,14 +903,14 @@
}
void ClientSocketPoolBaseHelper::OnIPAddressChanged() {
- Flush();
+ FlushWithError(ERR_NETWORK_CHANGED);
}
-void ClientSocketPoolBaseHelper::Flush() {
+void ClientSocketPoolBaseHelper::FlushWithError(int error) {
pool_generation_number_++;
CancelAllConnectJobs();
CloseIdleSockets();
- AbortAllRequests();
+ CancelAllRequestsWithError(error);
}
bool ClientSocketPoolBaseHelper::IsStalled() const {
@@ -1031,7 +1031,7 @@
DCHECK_EQ(0, connecting_socket_count_);
}
-void ClientSocketPoolBaseHelper::AbortAllRequests() {
+void ClientSocketPoolBaseHelper::CancelAllRequestsWithError(int error) {
for (GroupMap::iterator i = group_map_.begin(); i != group_map_.end();) {
Group* group = i->second;
@@ -1041,7 +1041,7 @@
it2 != pending_requests.end(); ++it2) {
scoped_ptr<const Request> request(*it2);
InvokeUserCallbackLater(
- request->handle(), request->callback(), ERR_ABORTED);
+ request->handle(), request->callback(), error);
}
// Delete group if no longer needed.