summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome_frame/urlmon_url_request.cc32
1 files changed, 16 insertions, 16 deletions
diff --git a/chrome_frame/urlmon_url_request.cc b/chrome_frame/urlmon_url_request.cc
index 652361c..12dbb66 100644
--- a/chrome_frame/urlmon_url_request.cc
+++ b/chrome_frame/urlmon_url_request.cc
@@ -851,7 +851,7 @@ void UrlmonUrlRequest::NotifyDelegateAndDie() {
delegate_ = NULL;
ReleaseBindings();
TerminateTransaction();
- if (delegate) {
+ if (delegate && !pending()) {
net::URLRequestStatus result = status_.get_result();
delegate->OnResponseEnd(id(), result);
} else {
@@ -995,22 +995,22 @@ void UrlmonUrlRequestManager::StartRequest(int request_id,
bool is_started = false;
if (pending_request_) {
if (pending_request_->url() != request_info.url) {
- DLOG(WARNING) << __FUNCTION__
- << "Received unexpected url request for url:"
- << request_info.url
- << ".Pending url request for url:"
- << pending_request_->url()
- << " was expected.";
- net::URLRequestStatus result;
- result.set_status(net::URLRequestStatus::FAILED);
- OnResponseEnd(request_id, result);
- return;
+ DLOG(INFO) << __FUNCTION__
+ << "Received url request for url:"
+ << request_info.url
+ << ". Stopping pending url request for url:"
+ << pending_request_->url();
+ pending_request_->Stop();
+ pending_request_ = NULL;
+ } else {
+ new_request.swap(pending_request_);
+ is_started = true;
+ DVLOG(1) << __FUNCTION__ << new_request->me()
+ << " assigned id " << request_id;
}
- new_request.swap(pending_request_);
- is_started = true;
- DVLOG(1) << __FUNCTION__ << new_request->me()
- << " assigned id " << request_id;
- } else {
+ }
+
+ if (!is_started) {
CComObject<UrlmonUrlRequest>* created_request = NULL;
CComObject<UrlmonUrlRequest>::CreateInstance(&created_request);
new_request = created_request;