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

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

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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/quic_stream_factory.h ('k') | net/quic/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/quic_stream_factory.h" 5 #include "net/quic/quic_stream_factory.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/cpu.h" 9 #include "base/cpu.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 config.SetInitialSessionFlowControlWindowToSend(kInitialReceiveWindowSize); 937 config.SetInitialSessionFlowControlWindowToSend(kInitialReceiveWindowSize);
938 if (http_server_properties_) { 938 if (http_server_properties_) {
939 const HttpServerProperties::NetworkStats* stats = 939 const HttpServerProperties::NetworkStats* stats =
940 http_server_properties_->GetServerNetworkStats( 940 http_server_properties_->GetServerNetworkStats(
941 server_id.host_port_pair()); 941 server_id.host_port_pair());
942 if (stats != nullptr) { 942 if (stats != nullptr) {
943 config.SetInitialRoundTripTimeUsToSend(stats->srtt.InMicroseconds()); 943 config.SetInitialRoundTripTimeUsToSend(stats->srtt.InMicroseconds());
944 } 944 }
945 } 945 }
946 946
947 if (quic_server_info_factory_ && !server_info) {
948 // Start the disk cache loading so that we can persist the newer QUIC server
949 // information and/or inform the disk cache that we have reused
950 // |server_info|.
951 server_info.reset(quic_server_info_factory_->GetForServer(server_id));
952 server_info->Start();
953 }
954
947 *session = new QuicClientSession( 955 *session = new QuicClientSession(
948 connection, socket.Pass(), this, transport_security_state_, 956 connection, socket.Pass(), this, transport_security_state_,
949 server_info.Pass(), config, server_id.is_https(), 957 server_info.Pass(), config, server_id.is_https(),
950 base::MessageLoop::current()->message_loop_proxy().get(), 958 base::MessageLoop::current()->message_loop_proxy().get(),
951 net_log.net_log()); 959 net_log.net_log());
952 all_sessions_[*session] = server_id; // owning pointer 960 all_sessions_[*session] = server_id; // owning pointer
953 (*session)->InitializeSession(server_id, &crypto_config_, 961 (*session)->InitializeSession(server_id, &crypto_config_,
954 quic_crypto_client_stream_factory_); 962 quic_crypto_client_stream_factory_);
955 bool closed_during_initialize = 963 bool closed_during_initialize =
956 !ContainsKey(all_sessions_, *session) || 964 !ContainsKey(all_sessions_, *session) ||
(...skipping 21 matching lines...) Expand all
978 session_aliases_[session].insert(server_id); 986 session_aliases_[session].insert(server_id);
979 const IpAliasKey ip_alias_key(session->connection()->peer_address(), 987 const IpAliasKey ip_alias_key(session->connection()->peer_address(),
980 server_id.is_https()); 988 server_id.is_https());
981 DCHECK(!ContainsKey(ip_aliases_[ip_alias_key], session)); 989 DCHECK(!ContainsKey(ip_aliases_[ip_alias_key], session));
982 ip_aliases_[ip_alias_key].insert(session); 990 ip_aliases_[ip_alias_key].insert(session);
983 } 991 }
984 992
985 void QuicStreamFactory::InitializeCachedStateInCryptoConfig( 993 void QuicStreamFactory::InitializeCachedStateInCryptoConfig(
986 const QuicServerId& server_id, 994 const QuicServerId& server_id,
987 const scoped_ptr<QuicServerInfo>& server_info) { 995 const scoped_ptr<QuicServerInfo>& server_info) {
996 // |server_info| will be NULL, if a non-empty server config already exists in
997 // the memory cache. This is a minor optimization to avoid LookupOrCreate.
988 if (!server_info) 998 if (!server_info)
989 return; 999 return;
990 1000
991 QuicCryptoClientConfig::CachedState* cached = 1001 QuicCryptoClientConfig::CachedState* cached =
992 crypto_config_.LookupOrCreate(server_id); 1002 crypto_config_.LookupOrCreate(server_id);
993 if (!cached->IsEmpty()) 1003 if (!cached->IsEmpty())
994 return; 1004 return;
995 1005
1006 if (http_server_properties_) {
1007 if (quic_supported_servers_at_startup_.empty()) {
1008 for (const std::pair<net::HostPortPair, net::AlternateProtocolInfo>&
1009 key_value : http_server_properties_->alternate_protocol_map()) {
1010 if (key_value.second.protocol == QUIC) {
1011 quic_supported_servers_at_startup_.insert(key_value.first);
1012 }
1013 }
1014 }
1015
1016 // TODO(rtenneti): Delete the following histogram after collecting stats.
1017 // If the AlternateProtocolMap contained an entry for this host, check if
1018 // the disk cache contained an entry for it.
1019 if (ContainsKey(quic_supported_servers_at_startup_,
1020 server_id.host_port_pair())) {
1021 UMA_HISTOGRAM_BOOLEAN(
1022 "Net.QuicServerInfo.ExpectConfigMissingFromDiskCache",
1023 server_info->state().server_config.empty());
1024 }
1025 }
1026
996 if (!cached->Initialize(server_info->state().server_config, 1027 if (!cached->Initialize(server_info->state().server_config,
997 server_info->state().source_address_token, 1028 server_info->state().source_address_token,
998 server_info->state().certs, 1029 server_info->state().certs,
999 server_info->state().server_config_sig, 1030 server_info->state().server_config_sig,
1000 clock_->WallNow())) 1031 clock_->WallNow()))
1001 return; 1032 return;
1002 1033
1003 if (!server_id.is_https()) { 1034 if (!server_id.is_https()) {
1004 // Don't check the certificates for insecure QUIC. 1035 // Don't check the certificates for insecure QUIC.
1005 cached->SetProofValid(); 1036 cached->SetProofValid();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 http_server_properties_->ClearAlternateProtocol(server); 1086 http_server_properties_->ClearAlternateProtocol(server);
1056 http_server_properties_->SetAlternateProtocol( 1087 http_server_properties_->SetAlternateProtocol(
1057 server, alternate.port, alternate.protocol, 1); 1088 server, alternate.port, alternate.protocol, 1);
1058 DCHECK_EQ(QUIC, 1089 DCHECK_EQ(QUIC,
1059 http_server_properties_->GetAlternateProtocol(server).protocol); 1090 http_server_properties_->GetAlternateProtocol(server).protocol);
1060 DCHECK(http_server_properties_->WasAlternateProtocolRecentlyBroken( 1091 DCHECK(http_server_properties_->WasAlternateProtocolRecentlyBroken(
1061 server)); 1092 server));
1062 } 1093 }
1063 1094
1064 } // namespace net 1095 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_stream_factory.h ('k') | net/quic/quic_stream_factory_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698