diff options
author | matthewyuan@chromium.org <matthewyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-01 20:38:00 +0000 |
---|---|---|
committer | matthewyuan@chromium.org <matthewyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-01 20:38:00 +0000 |
commit | 996e3906828c85a2a5e084dc9b62ec11752a755e (patch) | |
tree | 8a9134dd543c18ce99f5646e6e1426a29108ce39 /content | |
parent | 042751fa5c65e2eaf38962c696c7b3a581c625fd (diff) | |
download | chromium_src-996e3906828c85a2a5e084dc9b62ec11752a755e.zip chromium_src-996e3906828c85a2a5e084dc9b62ec11752a755e.tar.gz chromium_src-996e3906828c85a2a5e084dc9b62ec11752a755e.tar.bz2 |
Per discussion with Jam, reverting cl since it is causing crbug/369128.
Revert 267206 "Fix WebURLLoaderImpl::Context leak if a pending r..."
> Fix WebURLLoaderImpl::Context leak if a pending request is canceled.
>
> Now, ResourceDispatcher::CancelPendingRequest will send
> ResourceHostMsg_CancelRequest and trigger OnRequestComplete. However,
> the request is pending and thus OnRequestComplete will be queued.
>
> There are at least two problems if OnRequestComplete is not called:
> 1. WebURLLoaderImpl::Context will never be released.
> 2. request_info->buffer leaks. The buffer holds shared memory handle
> (file descriptor). fd leaking may lead to HW video decode failure on
> ChromeOS (detail in chrome-os-partner:27911#63)
>
> This issue is similar to issue 328092.
>
> BUG=chrome-os-partner:27911
> R=jam@chromium.org
>
> Review URL: https://codereview.chromium.org/258783003
TBR=kcwu@chromium.org
Review URL: https://codereview.chromium.org/265883003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267623 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/child/resource_dispatcher.cc | 31 | ||||
-rw-r--r-- | content/child/resource_dispatcher.h | 1 |
2 files changed, 0 insertions, 32 deletions
diff --git a/content/child/resource_dispatcher.cc b/content/child/resource_dispatcher.cc index e8778c8..b6a877f 100644 --- a/content/child/resource_dispatcher.cc +++ b/content/child/resource_dispatcher.cc @@ -297,18 +297,6 @@ bool ResourceDispatcher::OnMessageReceived(const IPC::Message& message) { return true; } - // If the request has been canceled, only dispatch - // ResourceMsg_RequestComplete (otherwise resource leaks) and drop other - // messages. - if (request_info->is_canceled) { - if (message.type() == ResourceMsg_RequestComplete::ID) { - DispatchMessage(message); - } else { - ReleaseResourcesInDataMessage(message); - } - return true; - } - if (request_info->is_deferred) { request_info->deferred_message_queue.push_back(new IPC::Message(message)); return true; @@ -600,23 +588,6 @@ void ResourceDispatcher::CancelPendingRequest(int request_id) { return; } - PendingRequestInfo& request_info = it->second; - request_info.is_canceled = true; - - // Removes pending requests. If ResourceMsg_RequestComplete was queued, - // dispatch it. - MessageQueue& queue = request_info.deferred_message_queue; - while (!queue.empty()) { - IPC::Message* message = queue.front(); - if (message->type() == ResourceMsg_RequestComplete::ID) { - DispatchMessage(*message); - } else { - ReleaseResourcesInDataMessage(*message); - } - queue.pop_front(); - delete message; - } - // |request_id| will be removed from |pending_requests_| when // OnRequestComplete returns with ERR_ABORTED. message_sender()->Send(new ResourceHostMsg_CancelRequest(request_id)); @@ -656,7 +627,6 @@ ResourceDispatcher::PendingRequestInfo::PendingRequestInfo() : peer(NULL), resource_type(ResourceType::SUB_RESOURCE), is_deferred(false), - is_canceled(false), blocked_response(false), buffer_size(0) { } @@ -671,7 +641,6 @@ ResourceDispatcher::PendingRequestInfo::PendingRequestInfo( resource_type(resource_type), origin_pid(origin_pid), is_deferred(false), - is_canceled(false), url(request_url), frame_origin(frame_origin), response_url(request_url), diff --git a/content/child/resource_dispatcher.h b/content/child/resource_dispatcher.h index 93e8580..5aabbd4 100644 --- a/content/child/resource_dispatcher.h +++ b/content/child/resource_dispatcher.h @@ -113,7 +113,6 @@ class CONTENT_EXPORT ResourceDispatcher : public IPC::Listener { int origin_pid; MessageQueue deferred_message_queue; bool is_deferred; - bool is_canceled; // Original requested url. GURL url; // The security origin of the frame that initiates this request. |