summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host/resource_dispatcher_host.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/renderer_host/resource_dispatcher_host.cc')
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host.cc22
1 files changed, 18 insertions, 4 deletions
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc
index ba161e4..750fa33 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc
@@ -205,7 +205,8 @@ bool ResourceDispatcherHost::HandleExternalProtocol(int request_id,
handler->OnResponseCompleted(request_id, URLRequestStatus(
URLRequestStatus::FAILED,
- net::ERR_ABORTED));
+ net::ERR_ABORTED),
+ std::string()); // No security info necessary.
return true;
}
@@ -224,7 +225,9 @@ void ResourceDispatcherHost::BeginRequest(
receiver->Send(new ViewMsg_Resource_RequestComplete(
render_view_id,
request_id,
- URLRequestStatus(URLRequestStatus::FAILED, net::ERR_ABORTED)));
+ URLRequestStatus(URLRequestStatus::FAILED, net::ERR_ABORTED),
+ std::string())); // No security info needed, connection was not
+ // established.
return;
}
@@ -919,7 +922,7 @@ void ResourceDispatcherHost::BeginRequestInternal(URLRequest* request,
if (memory_cost > max_outstanding_requests_cost_per_process_) {
// We call "CancelWithError()" as a way of setting the URLRequest's
// status -- it has no effect beyond this, since the request hasn't started.
- request->CancelWithError(net::ERR_INSUFFICIENT_RESOURCES);
+ request->SimulateError(net::ERR_INSUFFICIENT_RESOURCES);
// TODO(eroman): this is kinda funky -- we insert the unstarted request into
// |pending_requests_| simply to please OnResponseCompleted().
@@ -1121,8 +1124,19 @@ void ResourceDispatcherHost::OnResponseCompleted(URLRequest* request) {
RESOURCE_LOG("OnResponseCompleted: " << request->url().spec());
ExtraRequestInfo* info = ExtraInfoForRequest(request);
+ std::string security_info;
+ const net::SSLInfo& ssl_info = request->ssl_info();
+ if (ssl_info.cert != NULL) {
+ int cert_id = CertStore::GetSharedInstance()->
+ StoreCert(ssl_info.cert, info->render_process_host_id);
+ security_info = SSLManager::SerializeSecurityInfo(cert_id,
+ ssl_info.cert_status,
+ ssl_info.security_bits);
+ }
+
if (info->resource_handler->OnResponseCompleted(info->request_id,
- request->status())) {
+ request->status(),
+ security_info)) {
NotifyResponseCompleted(request, info->render_process_host_id);
// The request is complete so we can remove it.