| Index: net/http/http_stream_factory_impl_job_controller.cc
|
| diff --git a/net/http/http_stream_factory_impl_job_controller.cc b/net/http/http_stream_factory_impl_job_controller.cc
|
| index 24d6e161d8fa4f8a1e4b82ad5960db385175222d..f10851844f89aeeeb686d0fd094fb3b2e957c3af 100644
|
| --- a/net/http/http_stream_factory_impl_job_controller.cc
|
| +++ b/net/http/http_stream_factory_impl_job_controller.cc
|
| @@ -448,7 +448,7 @@ void HttpStreamFactoryImpl::JobController::OnNewSpdySessionReady(
|
| const NetLogSource source_dependency = job->net_log().source();
|
|
|
| // Cache this so we can still use it if the JobController is deleted.
|
| - HttpStreamFactoryImpl* factory = factory_;
|
| + SpdySessionPool* spdy_session_pool = session_->spdy_session_pool();
|
|
|
| // Notify |request_|.
|
| if (!is_preconnect_ && !is_job_orphaned) {
|
| @@ -483,12 +483,13 @@ void HttpStreamFactoryImpl::JobController::OnNewSpdySessionReady(
|
| }
|
| }
|
|
|
| - // Notify |factory_|. |request_| and |bounded_job_| might be deleted already.
|
| + // Notify other requests that have the same SpdySessionKey. |request_| and
|
| + // |bounded_job_| might be deleted already.
|
| if (spdy_session && spdy_session->IsAvailable()) {
|
| - factory->OnNewSpdySessionReady(spdy_session, direct, used_ssl_config,
|
| - used_proxy_info, was_alpn_negotiated,
|
| - negotiated_protocol, using_spdy,
|
| - source_dependency);
|
| + spdy_session_pool->OnNewSpdySessionReady(
|
| + spdy_session, direct, used_ssl_config, used_proxy_info,
|
| + was_alpn_negotiated, negotiated_protocol, using_spdy,
|
| + source_dependency);
|
| }
|
| if (is_job_orphaned) {
|
| OnOrphanedJobComplete(job);
|
| @@ -603,13 +604,8 @@ void HttpStreamFactoryImpl::JobController::SetSpdySessionKey(
|
| if (is_preconnect_ || IsJobOrphaned(job))
|
| return;
|
|
|
| - if (!request_->HasSpdySessionKey()) {
|
| - RequestSet& request_set =
|
| - factory_->spdy_session_request_map_[spdy_session_key];
|
| - DCHECK(!base::ContainsKey(request_set, request_));
|
| - request_set.insert(request_);
|
| - request_->SetSpdySessionKey(spdy_session_key);
|
| - }
|
| + session_->spdy_session_pool()->AddRequestToSpdySessionRequestMap(
|
| + spdy_session_key, request_);
|
| }
|
|
|
| void HttpStreamFactoryImpl::JobController::
|
| @@ -622,18 +618,10 @@ void HttpStreamFactoryImpl::JobController::
|
|
|
| void HttpStreamFactoryImpl::JobController::
|
| RemoveRequestFromSpdySessionRequestMap() {
|
| - if (request_->HasSpdySessionKey()) {
|
| - const SpdySessionKey& spdy_session_key = request_->GetSpdySessionKey();
|
| - SpdySessionRequestMap& spdy_session_request_map =
|
| - factory_->spdy_session_request_map_;
|
| - DCHECK(base::ContainsKey(spdy_session_request_map, spdy_session_key));
|
| - RequestSet& request_set = spdy_session_request_map[spdy_session_key];
|
| - DCHECK(base::ContainsKey(request_set, request_));
|
| - request_set.erase(request_);
|
| - if (request_set.empty())
|
| - spdy_session_request_map.erase(spdy_session_key);
|
| - request_->ResetSpdySessionKey();
|
| - }
|
| + // TODO(xunjieli): Use a DCHECK once https://crbug.com/718576 is fixed.
|
| + CHECK(request_);
|
| + session_->spdy_session_pool()->RemoveRequestFromSpdySessionRequestMap(
|
| + request_);
|
| }
|
|
|
| const NetLogWithSource* HttpStreamFactoryImpl::JobController::GetNetLog()
|
|
|