Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(430)

Side by Side Diff: net/quic/chromium/quic_stream_factory.cc

Issue 2417183003: Remove stl_util's deletion functions from remaining quic code. (Closed)
Patch Set: rebase Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/chromium/quic_stream_factory.h ('k') | net/quic/chromium/quic_stream_factory_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/chromium/quic_stream_factory.h" 5 #include "net/quic/chromium/quic_stream_factory.h"
6 6
7 #include <openssl/aead.h> 7 #include <openssl/aead.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <tuple> 10 #include <tuple>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
15 #include "base/metrics/field_trial.h" 15 #include "base/metrics/field_trial.h"
16 #include "base/metrics/histogram_macros.h" 16 #include "base/metrics/histogram_macros.h"
17 #include "base/metrics/sparse_histogram.h" 17 #include "base/metrics/sparse_histogram.h"
18 #include "base/rand_util.h" 18 #include "base/rand_util.h"
19 #include "base/single_thread_task_runner.h" 19 #include "base/single_thread_task_runner.h"
20 #include "base/stl_util.h"
21 #include "base/strings/string_number_conversions.h" 20 #include "base/strings/string_number_conversions.h"
22 #include "base/strings/string_util.h" 21 #include "base/strings/string_util.h"
23 #include "base/strings/stringprintf.h" 22 #include "base/strings/stringprintf.h"
24 #include "base/threading/thread_task_runner_handle.h" 23 #include "base/threading/thread_task_runner_handle.h"
25 #include "base/trace_event/trace_event.h" 24 #include "base/trace_event/trace_event.h"
26 #include "base/values.h" 25 #include "base/values.h"
27 #include "crypto/openssl_util.h" 26 #include "crypto/openssl_util.h"
28 #include "net/base/ip_address.h" 27 #include "net/base/ip_address.h"
29 #include "net/base/net_errors.h" 28 #include "net/base/net_errors.h"
30 #include "net/cert/cert_verifier.h" 29 #include "net/cert/cert_verifier.h"
(...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 NetworkChangeNotifier::AddIPAddressObserver(this); 845 NetworkChangeNotifier::AddIPAddressObserver(this);
847 } 846 }
848 } 847 }
849 848
850 QuicStreamFactory::~QuicStreamFactory() { 849 QuicStreamFactory::~QuicStreamFactory() {
851 CloseAllSessions(ERR_ABORTED, QUIC_CONNECTION_CANCELLED); 850 CloseAllSessions(ERR_ABORTED, QUIC_CONNECTION_CANCELLED);
852 while (!all_sessions_.empty()) { 851 while (!all_sessions_.empty()) {
853 delete all_sessions_.begin()->first; 852 delete all_sessions_.begin()->first;
854 all_sessions_.erase(all_sessions_.begin()); 853 all_sessions_.erase(all_sessions_.begin());
855 } 854 }
856 while (!active_jobs_.empty()) { 855 active_jobs_.clear();
857 const QuicServerId server_id = active_jobs_.begin()->first;
858 base::STLDeleteElements(&(active_jobs_[server_id]));
859 active_jobs_.erase(server_id);
860 }
861 while (!active_cert_verifier_jobs_.empty()) 856 while (!active_cert_verifier_jobs_.empty())
862 active_cert_verifier_jobs_.erase(active_cert_verifier_jobs_.begin()); 857 active_cert_verifier_jobs_.erase(active_cert_verifier_jobs_.begin());
863 if (ssl_config_service_.get()) 858 if (ssl_config_service_.get())
864 ssl_config_service_->RemoveObserver(this); 859 ssl_config_service_->RemoveObserver(this);
865 if (migrate_sessions_on_network_change_) { 860 if (migrate_sessions_on_network_change_) {
866 NetworkChangeNotifier::RemoveNetworkObserver(this); 861 NetworkChangeNotifier::RemoveNetworkObserver(this);
867 } else if (close_sessions_on_ip_change_) { 862 } else if (close_sessions_on_ip_change_) {
868 NetworkChangeNotifier::RemoveIPAddressObserver(this); 863 NetworkChangeNotifier::RemoveIPAddressObserver(this);
869 } 864 }
870 } 865 }
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
991 // don't wait for Cache thread to load the data for that server. 986 // don't wait for Cache thread to load the data for that server.
992 load_from_disk_cache = false; 987 load_from_disk_cache = false;
993 } 988 }
994 if (load_from_disk_cache && CryptoConfigCacheIsEmpty(server_id)) 989 if (load_from_disk_cache && CryptoConfigCacheIsEmpty(server_id))
995 quic_server_info = quic_server_info_factory_->GetForServer(server_id); 990 quic_server_info = quic_server_info_factory_->GetForServer(server_id);
996 } 991 }
997 992
998 ignore_result(StartCertVerifyJob(server_id, cert_verify_flags, net_log)); 993 ignore_result(StartCertVerifyJob(server_id, cert_verify_flags, net_log));
999 994
1000 QuicSessionKey key(destination, server_id); 995 QuicSessionKey key(destination, server_id);
1001 std::unique_ptr<Job> job( 996 std::unique_ptr<Job> job = base::MakeUnique<Job>(
1002 new Job(this, host_resolver_, key, WasQuicRecentlyBroken(server_id), 997 this, host_resolver_, key, WasQuicRecentlyBroken(server_id),
1003 cert_verify_flags, quic_server_info, net_log)); 998 cert_verify_flags, quic_server_info, net_log);
1004 int rv = job->Run(base::Bind(&QuicStreamFactory::OnJobComplete, 999 int rv = job->Run(base::Bind(&QuicStreamFactory::OnJobComplete,
1005 base::Unretained(this), job.get())); 1000 base::Unretained(this), job.get()));
1006 if (rv == ERR_IO_PENDING) { 1001 if (rv == ERR_IO_PENDING) {
1007 active_requests_[request] = server_id; 1002 active_requests_[request] = server_id;
1008 job_requests_map_[server_id].insert(request); 1003 job_requests_map_[server_id].insert(request);
1009 active_jobs_[server_id].insert(job.release()); 1004 Job* job_ptr = job.get();
1005 active_jobs_[server_id][job_ptr] = std::move(job);
1010 return rv; 1006 return rv;
1011 } 1007 }
1012 if (rv == OK) { 1008 if (rv == OK) {
1013 // TODO(rtenneti): crbug.com/498823 - revert active_sessions_.empty() 1009 // TODO(rtenneti): crbug.com/498823 - revert active_sessions_.empty()
1014 // related changes. 1010 // related changes.
1015 if (active_sessions_.empty()) 1011 if (active_sessions_.empty())
1016 return ERR_QUIC_PROTOCOL_ERROR; 1012 return ERR_QUIC_PROTOCOL_ERROR;
1017 SessionMap::iterator it = active_sessions_.find(server_id); 1013 SessionMap::iterator it = active_sessions_.find(server_id);
1018 DCHECK(it != active_sessions_.end()); 1014 DCHECK(it != active_sessions_.end());
1019 if (it == active_sessions_.end()) 1015 if (it == active_sessions_.end())
(...skipping 20 matching lines...) Expand all
1040 return destination_.Equals(other.destination_) && 1036 return destination_.Equals(other.destination_) &&
1041 server_id_ == other.server_id_; 1037 server_id_ == other.server_id_;
1042 } 1038 }
1043 1039
1044 void QuicStreamFactory::CreateAuxilaryJob(const QuicSessionKey& key, 1040 void QuicStreamFactory::CreateAuxilaryJob(const QuicSessionKey& key,
1045 int cert_verify_flags, 1041 int cert_verify_flags,
1046 const NetLogWithSource& net_log) { 1042 const NetLogWithSource& net_log) {
1047 Job* aux_job = 1043 Job* aux_job =
1048 new Job(this, host_resolver_, key, WasQuicRecentlyBroken(key.server_id()), 1044 new Job(this, host_resolver_, key, WasQuicRecentlyBroken(key.server_id()),
1049 cert_verify_flags, nullptr, net_log); 1045 cert_verify_flags, nullptr, net_log);
1050 active_jobs_[key.server_id()].insert(aux_job); 1046 active_jobs_[key.server_id()][aux_job] = base::WrapUnique(aux_job);
1051 task_runner_->PostTask(FROM_HERE, 1047 task_runner_->PostTask(FROM_HERE,
1052 base::Bind(&QuicStreamFactory::Job::RunAuxilaryJob, 1048 base::Bind(&QuicStreamFactory::Job::RunAuxilaryJob,
1053 aux_job->GetWeakPtr())); 1049 aux_job->GetWeakPtr()));
1054 } 1050 }
1055 1051
1056 bool QuicStreamFactory::OnResolution(const QuicSessionKey& key, 1052 bool QuicStreamFactory::OnResolution(const QuicSessionKey& key,
1057 const AddressList& address_list) { 1053 const AddressList& address_list) {
1058 const QuicServerId& server_id(key.server_id()); 1054 const QuicServerId& server_id(key.server_id());
1059 DCHECK(!HasActiveSession(server_id)); 1055 DCHECK(!HasActiveSession(server_id));
1060 if (disable_connection_pooling_) 1056 if (disable_connection_pooling_)
(...skipping 18 matching lines...) Expand all
1079 // Copy |server_id|, because |job| might be destroyed before this method 1075 // Copy |server_id|, because |job| might be destroyed before this method
1080 // returns. 1076 // returns.
1081 const QuicServerId server_id(job->key().server_id()); 1077 const QuicServerId server_id(job->key().server_id());
1082 if (rv != OK) { 1078 if (rv != OK) {
1083 JobSet* jobs = &(active_jobs_[server_id]); 1079 JobSet* jobs = &(active_jobs_[server_id]);
1084 if (jobs->size() > 1) { 1080 if (jobs->size() > 1) {
1085 // If there is another pending job, then we can delete this job and let 1081 // If there is another pending job, then we can delete this job and let
1086 // the other job handle the request. 1082 // the other job handle the request.
1087 job->Cancel(); 1083 job->Cancel();
1088 jobs->erase(job); 1084 jobs->erase(job);
1089 delete job;
1090 return; 1085 return;
1091 } 1086 }
1092 } 1087 }
1093 1088
1094 if (rv == OK) { 1089 if (rv == OK) {
1095 if (!always_require_handshake_confirmation_) 1090 if (!always_require_handshake_confirmation_)
1096 set_require_confirmation(false); 1091 set_require_confirmation(false);
1097 1092
1098 if (!job_requests_map_[server_id].empty()) { 1093 if (!job_requests_map_[server_id].empty()) {
1099 SessionMap::iterator session_it = active_sessions_.find(server_id); 1094 SessionMap::iterator session_it = active_sessions_.find(server_id);
(...skipping 11 matching lines...) Expand all
1111 RequestSet::iterator it = job_requests_map_[server_id].begin(); 1106 RequestSet::iterator it = job_requests_map_[server_id].begin();
1112 QuicStreamRequest* request = *it; 1107 QuicStreamRequest* request = *it;
1113 job_requests_map_[server_id].erase(it); 1108 job_requests_map_[server_id].erase(it);
1114 active_requests_.erase(request); 1109 active_requests_.erase(request);
1115 // Even though we're invoking callbacks here, we don't need to worry 1110 // Even though we're invoking callbacks here, we don't need to worry
1116 // about |this| being deleted, because the factory is owned by the 1111 // about |this| being deleted, because the factory is owned by the
1117 // profile which can not be deleted via callbacks. 1112 // profile which can not be deleted via callbacks.
1118 request->OnRequestComplete(rv); 1113 request->OnRequestComplete(rv);
1119 } 1114 }
1120 1115
1121 for (Job* other_job : active_jobs_[server_id]) { 1116 for (auto& other_job : active_jobs_[server_id]) {
1122 if (other_job != job) 1117 if (other_job.first != job)
1123 other_job->Cancel(); 1118 other_job.first->Cancel();
1124 } 1119 }
1125 1120
1126 base::STLDeleteElements(&(active_jobs_[server_id])); 1121 active_jobs_[server_id].clear();
1127 active_jobs_.erase(server_id); 1122 active_jobs_.erase(server_id);
1128 job_requests_map_.erase(server_id); 1123 job_requests_map_.erase(server_id);
1129 } 1124 }
1130 1125
1131 void QuicStreamFactory::OnCertVerifyJobComplete(CertVerifierJob* job, int rv) { 1126 void QuicStreamFactory::OnCertVerifyJobComplete(CertVerifierJob* job, int rv) {
1132 active_cert_verifier_jobs_.erase(job->server_id()); 1127 active_cert_verifier_jobs_.erase(job->server_id());
1133 } 1128 }
1134 1129
1135 std::unique_ptr<QuicHttpStream> QuicStreamFactory::CreateFromSession( 1130 std::unique_ptr<QuicHttpStream> QuicStreamFactory::CreateFromSession(
1136 QuicChromiumClientSession* session) { 1131 QuicChromiumClientSession* session) {
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after
1903 void QuicStreamFactory::OpenFactory() { 1898 void QuicStreamFactory::OpenFactory() {
1904 status_ = OPEN; 1899 status_ = OPEN;
1905 } 1900 }
1906 1901
1907 void QuicStreamFactory::MaybeClearConsecutiveDisabledCount() { 1902 void QuicStreamFactory::MaybeClearConsecutiveDisabledCount() {
1908 if (status_ == OPEN) 1903 if (status_ == OPEN)
1909 consecutive_disabled_count_ = 0; 1904 consecutive_disabled_count_ = 0;
1910 } 1905 }
1911 1906
1912 } // namespace net 1907 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_stream_factory.h ('k') | net/quic/chromium/quic_stream_factory_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698