| Index: net/quic/chromium/quic_stream_factory.cc
|
| diff --git a/net/quic/chromium/quic_stream_factory.cc b/net/quic/chromium/quic_stream_factory.cc
|
| index 4bdc8bb25072909f2bd83ca0e716200a35388430..9fc9ea18a2c3835f2c3af8fba25fbf7405d8f421 100644
|
| --- a/net/quic/chromium/quic_stream_factory.cc
|
| +++ b/net/quic/chromium/quic_stream_factory.cc
|
| @@ -1148,15 +1148,18 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) {
|
| }
|
| }
|
|
|
| + ServerIDRequestsMap::iterator requests_iter =
|
| + job_requests_map_.find(server_id);
|
| + DCHECK(requests_iter != job_requests_map_.end());
|
| if (rv == OK) {
|
| if (!always_require_handshake_confirmation_)
|
| set_require_confirmation(false);
|
|
|
| - if (!job_requests_map_[server_id].empty()) {
|
| + if (!requests_iter->second.empty()) {
|
| SessionMap::iterator session_it = active_sessions_.find(server_id);
|
| DCHECK(session_it != active_sessions_.end());
|
| QuicChromiumClientSession* session = session_it->second;
|
| - for (QuicStreamRequest* request : job_requests_map_[server_id]) {
|
| + for (QuicStreamRequest* request : requests_iter->second) {
|
| DCHECK(request->server_id() == server_id);
|
| // Do not notify |request| yet.
|
| request->SetSession(session);
|
| @@ -1164,10 +1167,9 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) {
|
| }
|
| }
|
|
|
| - while (!job_requests_map_[server_id].empty()) {
|
| - RequestSet::iterator it = job_requests_map_[server_id].begin();
|
| - QuicStreamRequest* request = *it;
|
| - job_requests_map_[server_id].erase(it);
|
| + // It's okay not to erase |request| from |requests_iter->second| because the
|
| + // entire RequestSet will be erased from |job_requests_map_|.
|
| + for (auto* request : requests_iter->second) {
|
| // Even though we're invoking callbacks here, we don't need to worry
|
| // about |this| being deleted, because the factory is owned by the
|
| // profile which can not be deleted via callbacks.
|
| @@ -1181,7 +1183,7 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) {
|
|
|
| active_jobs_[server_id].clear();
|
| active_jobs_.erase(server_id);
|
| - job_requests_map_.erase(server_id);
|
| + job_requests_map_.erase(requests_iter);
|
| }
|
|
|
| void QuicStreamFactory::OnCertVerifyJobComplete(CertVerifierJob* job, int rv) {
|
|
|