Index: content/browser/renderer_host/resource_dispatcher_host.cc |
diff --git a/content/browser/renderer_host/resource_dispatcher_host.cc b/content/browser/renderer_host/resource_dispatcher_host.cc |
index ce7548176b975c5f49067d7ca024a882a4f1ae13..70c05755cd0ac6b186652444d716fc59b7d47ade 100644 |
--- a/content/browser/renderer_host/resource_dispatcher_host.cc |
+++ b/content/browser/renderer_host/resource_dispatcher_host.cc |
@@ -1187,7 +1187,13 @@ void ResourceDispatcherHost::CancelRequest(int child_id, |
DLOG(WARNING) << "Canceling a request that wasn't found"; |
return; |
} |
- CancelRequestInternal(i->second, from_renderer); |
+ net::URLRequest* request = i->second; |
+ const bool started_before_cancel = request->is_pending(); |
+ CancelRequestInternal(request, from_renderer); |
+ // If the request isn't in flight, then we won't get asyncronous notification, |
+ // so we have to signal ourselves to finish this request. |
+ if (!started_before_cancel) |
+ OnResponseCompleted(request); |
} |
void ResourceDispatcherHost::CancelRequestInternal(net::URLRequest* request, |