summaryrefslogtreecommitdiffstats
path: root/google_apis/gaia/gaia_oauth_client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'google_apis/gaia/gaia_oauth_client.cc')
-rw-r--r--google_apis/gaia/gaia_oauth_client.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/google_apis/gaia/gaia_oauth_client.cc b/google_apis/gaia/gaia_oauth_client.cc
index 41e8f96..46fbac1 100644
--- a/google_apis/gaia/gaia_oauth_client.cc
+++ b/google_apis/gaia/gaia_oauth_client.cc
@@ -163,15 +163,16 @@ void GaiaOAuthClient::Core::OnURLFetchComplete(
// URLFetcher::Core::RetryOrCompleteUrlFetch resets it to NULL...
request_->SetRequestContext(request_context_getter_);
request_->Start();
- } else {
- request_.reset();
}
}
void GaiaOAuthClient::Core::HandleResponse(
const net::URLFetcher* source,
bool* should_retry_request) {
- *should_retry_request = false;
+ // Keep the URLFetcher object in case we need to reuse it.
+ scoped_ptr<net::URLFetcher> old_request = request_.Pass();
+ DCHECK_EQ(source, old_request.get());
+
// RC_BAD_REQUEST means the arguments are invalid. No point retrying. We are
// done here.
if (source->GetResponseCode() == net::HTTP_BAD_REQUEST) {
@@ -199,6 +200,7 @@ void GaiaOAuthClient::Core::HandleResponse(
// Retry limit reached. Give up.
delegate_->OnNetworkError(source->GetResponseCode());
} else {
+ request_ = old_request.Pass();
*should_retry_request = true;
}
return;