| Index: net/quic/quic_stream_factory.cc
|
| diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
|
| index cf706086d4507921c5d41435dcd96238ba02f234..076797af0a0bc5e687762d7a9b617e4ecb2b28ea 100644
|
| --- a/net/quic/quic_stream_factory.cc
|
| +++ b/net/quic/quic_stream_factory.cc
|
| @@ -944,6 +944,14 @@ int QuicStreamFactory::CreateSession(
|
| }
|
| }
|
|
|
| + if (quic_server_info_factory_ && !server_info) {
|
| + // Start the disk cache loading so that we can persist the newer QUIC server
|
| + // information and/or inform the disk cache that we have reused
|
| + // |server_info|.
|
| + server_info.reset(quic_server_info_factory_->GetForServer(server_id));
|
| + server_info->Start();
|
| + }
|
| +
|
| *session = new QuicClientSession(
|
| connection, socket.Pass(), this, transport_security_state_,
|
| server_info.Pass(), config, server_id.is_https(),
|
| @@ -985,6 +993,8 @@ void QuicStreamFactory::ActivateSession(
|
| void QuicStreamFactory::InitializeCachedStateInCryptoConfig(
|
| const QuicServerId& server_id,
|
| const scoped_ptr<QuicServerInfo>& server_info) {
|
| + // |server_info| will be NULL, if a non-empty server config already exists in
|
| + // the memory cache. This is a minor optimization to avoid LookupOrCreate.
|
| if (!server_info)
|
| return;
|
|
|
| @@ -993,6 +1003,27 @@ void QuicStreamFactory::InitializeCachedStateInCryptoConfig(
|
| if (!cached->IsEmpty())
|
| return;
|
|
|
| + if (http_server_properties_) {
|
| + if (quic_supported_servers_at_startup_.empty()) {
|
| + for (const std::pair<net::HostPortPair, net::AlternateProtocolInfo>&
|
| + key_value : http_server_properties_->alternate_protocol_map()) {
|
| + if (key_value.second.protocol == QUIC) {
|
| + quic_supported_servers_at_startup_.insert(key_value.first);
|
| + }
|
| + }
|
| + }
|
| +
|
| + // TODO(rtenneti): Delete the following histogram after collecting stats.
|
| + // If the AlternateProtocolMap contained an entry for this host, check if
|
| + // the disk cache contained an entry for it.
|
| + if (ContainsKey(quic_supported_servers_at_startup_,
|
| + server_id.host_port_pair())) {
|
| + UMA_HISTOGRAM_BOOLEAN(
|
| + "Net.QuicServerInfo.ExpectConfigMissingFromDiskCache",
|
| + server_info->state().server_config.empty());
|
| + }
|
| + }
|
| +
|
| if (!cached->Initialize(server_info->state().server_config,
|
| server_info->state().source_address_token,
|
| server_info->state().certs,
|
|
|