summaryrefslogtreecommitdiffstats
path: root/content/child
diff options
context:
space:
mode:
authormatthewyuan@chromium.org <matthewyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-01 20:38:00 +0000
committermatthewyuan@chromium.org <matthewyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-01 20:38:00 +0000
commit996e3906828c85a2a5e084dc9b62ec11752a755e (patch)
tree8a9134dd543c18ce99f5646e6e1426a29108ce39 /content/child
parent042751fa5c65e2eaf38962c696c7b3a581c625fd (diff)
downloadchromium_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/child')
-rw-r--r--content/child/resource_dispatcher.cc31
-rw-r--r--content/child/resource_dispatcher.h1
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.