| OLD | NEW |
| 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/quic_chromium_client_session.h" | 5 #include "net/quic/quic_chromium_client_session.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
| 8 #include "base/location.h" | 10 #include "base/location.h" |
| 9 #include "base/metrics/histogram_macros.h" | 11 #include "base/metrics/histogram_macros.h" |
| 10 #include "base/metrics/sparse_histogram.h" | 12 #include "base/metrics/sparse_histogram.h" |
| 11 #include "base/single_thread_task_runner.h" | 13 #include "base/single_thread_task_runner.h" |
| 12 #include "base/stl_util.h" | 14 #include "base/stl_util.h" |
| 13 #include "base/strings/string_number_conversions.h" | 15 #include "base/strings/string_number_conversions.h" |
| 14 #include "base/thread_task_runner_handle.h" | 16 #include "base/thread_task_runner_handle.h" |
| 15 #include "base/values.h" | 17 #include "base/values.h" |
| 16 #include "net/base/io_buffer.h" | 18 #include "net/base/io_buffer.h" |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 int cert_verify_flags, | 105 int cert_verify_flags, |
| 104 bool require_confirmation, | 106 bool require_confirmation, |
| 105 NetLogCaptureMode /* capture_mode */) { | 107 NetLogCaptureMode /* capture_mode */) { |
| 106 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 108 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
| 107 dict->SetString("host", server_id->host()); | 109 dict->SetString("host", server_id->host()); |
| 108 dict->SetInteger("port", server_id->port()); | 110 dict->SetInteger("port", server_id->port()); |
| 109 dict->SetBoolean("privacy_mode", | 111 dict->SetBoolean("privacy_mode", |
| 110 server_id->privacy_mode() == PRIVACY_MODE_ENABLED); | 112 server_id->privacy_mode() == PRIVACY_MODE_ENABLED); |
| 111 dict->SetBoolean("require_confirmation", require_confirmation); | 113 dict->SetBoolean("require_confirmation", require_confirmation); |
| 112 dict->SetInteger("cert_verify_flags", cert_verify_flags); | 114 dict->SetInteger("cert_verify_flags", cert_verify_flags); |
| 113 return dict.Pass(); | 115 return std::move(dict); |
| 114 } | 116 } |
| 115 | 117 |
| 116 } // namespace | 118 } // namespace |
| 117 | 119 |
| 118 QuicChromiumClientSession::StreamRequest::StreamRequest() : stream_(nullptr) {} | 120 QuicChromiumClientSession::StreamRequest::StreamRequest() : stream_(nullptr) {} |
| 119 | 121 |
| 120 QuicChromiumClientSession::StreamRequest::~StreamRequest() { | 122 QuicChromiumClientSession::StreamRequest::~StreamRequest() { |
| 121 CancelRequest(); | 123 CancelRequest(); |
| 122 } | 124 } |
| 123 | 125 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 QuicCryptoClientConfig* crypto_config, | 173 QuicCryptoClientConfig* crypto_config, |
| 172 const char* const connection_description, | 174 const char* const connection_description, |
| 173 base::TimeTicks dns_resolution_end_time, | 175 base::TimeTicks dns_resolution_end_time, |
| 174 base::TaskRunner* task_runner, | 176 base::TaskRunner* task_runner, |
| 175 scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher, | 177 scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher, |
| 176 NetLog* net_log) | 178 NetLog* net_log) |
| 177 : QuicClientSessionBase(connection, config), | 179 : QuicClientSessionBase(connection, config), |
| 178 server_id_(server_id), | 180 server_id_(server_id), |
| 179 require_confirmation_(false), | 181 require_confirmation_(false), |
| 180 stream_factory_(stream_factory), | 182 stream_factory_(stream_factory), |
| 181 socket_(socket.Pass()), | 183 socket_(std::move(socket)), |
| 182 transport_security_state_(transport_security_state), | 184 transport_security_state_(transport_security_state), |
| 183 server_info_(server_info.Pass()), | 185 server_info_(std::move(server_info)), |
| 184 num_total_streams_(0), | 186 num_total_streams_(0), |
| 185 task_runner_(task_runner), | 187 task_runner_(task_runner), |
| 186 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_QUIC_SESSION)), | 188 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_QUIC_SESSION)), |
| 187 packet_reader_(socket_.get(), | 189 packet_reader_(socket_.get(), |
| 188 clock, | 190 clock, |
| 189 this, | 191 this, |
| 190 yield_after_packets, | 192 yield_after_packets, |
| 191 yield_after_duration, | 193 yield_after_duration, |
| 192 net_log_), | 194 net_log_), |
| 193 dns_resolution_end_time_(dns_resolution_end_time), | 195 dns_resolution_end_time_(dns_resolution_end_time), |
| 194 logger_(new QuicConnectionLogger(this, | 196 logger_(new QuicConnectionLogger(this, |
| 195 connection_description, | 197 connection_description, |
| 196 socket_performance_watcher.Pass(), | 198 std::move(socket_performance_watcher), |
| 197 net_log_)), | 199 net_log_)), |
| 198 going_away_(false), | 200 going_away_(false), |
| 199 disabled_reason_(QUIC_DISABLED_NOT), | 201 disabled_reason_(QUIC_DISABLED_NOT), |
| 200 weak_factory_(this) { | 202 weak_factory_(this) { |
| 201 crypto_stream_.reset( | 203 crypto_stream_.reset( |
| 202 crypto_client_stream_factory | 204 crypto_client_stream_factory |
| 203 ? crypto_client_stream_factory->CreateQuicCryptoClientStream( | 205 ? crypto_client_stream_factory->CreateQuicCryptoClientStream( |
| 204 server_id, this, crypto_config) | 206 server_id, this, crypto_config) |
| 205 : new QuicCryptoClientStream( | 207 : new QuicCryptoClientStream( |
| 206 server_id, this, | 208 server_id, this, |
| (...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 807 | 809 |
| 808 void QuicChromiumClientSession::OnProofVerifyDetailsAvailable( | 810 void QuicChromiumClientSession::OnProofVerifyDetailsAvailable( |
| 809 const ProofVerifyDetails& verify_details) { | 811 const ProofVerifyDetails& verify_details) { |
| 810 const ProofVerifyDetailsChromium* verify_details_chromium = | 812 const ProofVerifyDetailsChromium* verify_details_chromium = |
| 811 reinterpret_cast<const ProofVerifyDetailsChromium*>(&verify_details); | 813 reinterpret_cast<const ProofVerifyDetailsChromium*>(&verify_details); |
| 812 cert_verify_result_.reset(new CertVerifyResult); | 814 cert_verify_result_.reset(new CertVerifyResult); |
| 813 cert_verify_result_->CopyFrom(verify_details_chromium->cert_verify_result); | 815 cert_verify_result_->CopyFrom(verify_details_chromium->cert_verify_result); |
| 814 pinning_failure_log_ = verify_details_chromium->pinning_failure_log; | 816 pinning_failure_log_ = verify_details_chromium->pinning_failure_log; |
| 815 scoped_ptr<ct::CTVerifyResult> ct_verify_result_copy( | 817 scoped_ptr<ct::CTVerifyResult> ct_verify_result_copy( |
| 816 new ct::CTVerifyResult(verify_details_chromium->ct_verify_result)); | 818 new ct::CTVerifyResult(verify_details_chromium->ct_verify_result)); |
| 817 ct_verify_result_ = ct_verify_result_copy.Pass(); | 819 ct_verify_result_ = std::move(ct_verify_result_copy); |
| 818 logger_->OnCertificateVerified(*cert_verify_result_); | 820 logger_->OnCertificateVerified(*cert_verify_result_); |
| 819 } | 821 } |
| 820 | 822 |
| 821 void QuicChromiumClientSession::StartReading() { | 823 void QuicChromiumClientSession::StartReading() { |
| 822 packet_reader_.StartReading(); | 824 packet_reader_.StartReading(); |
| 823 } | 825 } |
| 824 | 826 |
| 825 void QuicChromiumClientSession::CloseSessionOnError(int error, | 827 void QuicChromiumClientSession::CloseSessionOnError(int error, |
| 826 QuicErrorCode quic_error) { | 828 QuicErrorCode quic_error) { |
| 827 RecordAndCloseSessionOnError(error, quic_error); | 829 RecordAndCloseSessionOnError(error, quic_error); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 880 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 882 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
| 881 dict->SetString("version", QuicVersionToString(connection()->version())); | 883 dict->SetString("version", QuicVersionToString(connection()->version())); |
| 882 dict->SetInteger("open_streams", GetNumOpenOutgoingStreams()); | 884 dict->SetInteger("open_streams", GetNumOpenOutgoingStreams()); |
| 883 scoped_ptr<base::ListValue> stream_list(new base::ListValue()); | 885 scoped_ptr<base::ListValue> stream_list(new base::ListValue()); |
| 884 for (base::hash_map<QuicStreamId, ReliableQuicStream*>::const_iterator it = | 886 for (base::hash_map<QuicStreamId, ReliableQuicStream*>::const_iterator it = |
| 885 dynamic_streams().begin(); | 887 dynamic_streams().begin(); |
| 886 it != dynamic_streams().end(); ++it) { | 888 it != dynamic_streams().end(); ++it) { |
| 887 stream_list->Append( | 889 stream_list->Append( |
| 888 new base::StringValue(base::UintToString(it->second->id()))); | 890 new base::StringValue(base::UintToString(it->second->id()))); |
| 889 } | 891 } |
| 890 dict->Set("active_streams", stream_list.Pass()); | 892 dict->Set("active_streams", std::move(stream_list)); |
| 891 | 893 |
| 892 dict->SetInteger("total_streams", num_total_streams_); | 894 dict->SetInteger("total_streams", num_total_streams_); |
| 893 dict->SetString("peer_address", peer_address().ToString()); | 895 dict->SetString("peer_address", peer_address().ToString()); |
| 894 dict->SetString("connection_id", base::Uint64ToString(connection_id())); | 896 dict->SetString("connection_id", base::Uint64ToString(connection_id())); |
| 895 dict->SetBoolean("connected", connection()->connected()); | 897 dict->SetBoolean("connected", connection()->connected()); |
| 896 const QuicConnectionStats& stats = connection()->GetStats(); | 898 const QuicConnectionStats& stats = connection()->GetStats(); |
| 897 dict->SetInteger("packets_sent", stats.packets_sent); | 899 dict->SetInteger("packets_sent", stats.packets_sent); |
| 898 dict->SetInteger("packets_received", stats.packets_received); | 900 dict->SetInteger("packets_received", stats.packets_received); |
| 899 dict->SetInteger("packets_lost", stats.packets_lost); | 901 dict->SetInteger("packets_lost", stats.packets_lost); |
| 900 SSLInfo ssl_info; | 902 SSLInfo ssl_info; |
| 901 dict->SetBoolean("secure", GetSSLInfo(&ssl_info) && ssl_info.cert.get()); | 903 dict->SetBoolean("secure", GetSSLInfo(&ssl_info) && ssl_info.cert.get()); |
| 902 | 904 |
| 903 scoped_ptr<base::ListValue> alias_list(new base::ListValue()); | 905 scoped_ptr<base::ListValue> alias_list(new base::ListValue()); |
| 904 for (std::set<HostPortPair>::const_iterator it = aliases.begin(); | 906 for (std::set<HostPortPair>::const_iterator it = aliases.begin(); |
| 905 it != aliases.end(); it++) { | 907 it != aliases.end(); it++) { |
| 906 alias_list->Append(new base::StringValue(it->ToString())); | 908 alias_list->Append(new base::StringValue(it->ToString())); |
| 907 } | 909 } |
| 908 dict->Set("aliases", alias_list.Pass()); | 910 dict->Set("aliases", std::move(alias_list)); |
| 909 | 911 |
| 910 return dict.Pass(); | 912 return std::move(dict); |
| 911 } | 913 } |
| 912 | 914 |
| 913 base::WeakPtr<QuicChromiumClientSession> | 915 base::WeakPtr<QuicChromiumClientSession> |
| 914 QuicChromiumClientSession::GetWeakPtr() { | 916 QuicChromiumClientSession::GetWeakPtr() { |
| 915 return weak_factory_.GetWeakPtr(); | 917 return weak_factory_.GetWeakPtr(); |
| 916 } | 918 } |
| 917 | 919 |
| 918 void QuicChromiumClientSession::OnReadError( | 920 void QuicChromiumClientSession::OnReadError( |
| 919 int result, | 921 int result, |
| 920 const DatagramClientSocket* socket) { | 922 const DatagramClientSocket* socket) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 980 return; | 982 return; |
| 981 | 983 |
| 982 // TODO(rch): re-enable this code once beta is cut. | 984 // TODO(rch): re-enable this code once beta is cut. |
| 983 // if (stream_factory_) | 985 // if (stream_factory_) |
| 984 // stream_factory_->OnSessionConnectTimeout(this); | 986 // stream_factory_->OnSessionConnectTimeout(this); |
| 985 // CloseAllStreams(ERR_QUIC_HANDSHAKE_FAILED); | 987 // CloseAllStreams(ERR_QUIC_HANDSHAKE_FAILED); |
| 986 // DCHECK_EQ(0u, GetNumOpenOutgoingStreams()); | 988 // DCHECK_EQ(0u, GetNumOpenOutgoingStreams()); |
| 987 } | 989 } |
| 988 | 990 |
| 989 } // namespace net | 991 } // namespace net |
| OLD | NEW |