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

Side by Side Diff: net/http/http_network_session.cc

Issue 524463004: Adds plumbing for always requiring handshake confirmation in QUIC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More nits fixed, test added, and formatting. Created 6 years, 3 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
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/http/http_network_session.h" 5 #include "net/http/http_network_session.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/debug/stack_trace.h" 10 #include "base/debug/stack_trace.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 spdy_max_concurrent_streams_limit(0), 83 spdy_max_concurrent_streams_limit(0),
84 time_func(&base::TimeTicks::Now), 84 time_func(&base::TimeTicks::Now),
85 force_spdy_over_ssl(true), 85 force_spdy_over_ssl(true),
86 force_spdy_always(false), 86 force_spdy_always(false),
87 use_alternate_protocols(false), 87 use_alternate_protocols(false),
88 alternate_protocol_probability_threshold(1), 88 alternate_protocol_probability_threshold(1),
89 enable_websocket_over_spdy(false), 89 enable_websocket_over_spdy(false),
90 enable_quic(false), 90 enable_quic(false),
91 enable_quic_port_selection(true), 91 enable_quic_port_selection(true),
92 enable_quic_time_based_loss_detection(false), 92 enable_quic_time_based_loss_detection(false),
93 quic_always_require_handshake_confirmation(false),
93 quic_clock(NULL), 94 quic_clock(NULL),
94 quic_random(NULL), 95 quic_random(NULL),
95 quic_max_packet_length(kDefaultMaxPacketSize), 96 quic_max_packet_length(kDefaultMaxPacketSize),
96 enable_user_alternate_protocol_ports(false), 97 enable_user_alternate_protocol_ports(false),
97 quic_crypto_client_stream_factory(NULL) { 98 quic_crypto_client_stream_factory(NULL) {
98 quic_supported_versions.push_back(QUIC_VERSION_21); 99 quic_supported_versions.push_back(QUIC_VERSION_21);
99 } 100 }
100 101
101 HttpNetworkSession::Params::~Params() {} 102 HttpNetworkSession::Params::~Params() {}
102 103
103 // TODO(mbelshe): Move the socket factories into HttpStreamFactory. 104 // TODO(mbelshe): Move the socket factories into HttpStreamFactory.
104 HttpNetworkSession::HttpNetworkSession(const Params& params) 105 HttpNetworkSession::HttpNetworkSession(const Params& params)
105 : net_log_(params.net_log), 106 : net_log_(params.net_log),
106 network_delegate_(params.network_delegate), 107 network_delegate_(params.network_delegate),
107 http_server_properties_(params.http_server_properties), 108 http_server_properties_(params.http_server_properties),
108 cert_verifier_(params.cert_verifier), 109 cert_verifier_(params.cert_verifier),
109 http_auth_handler_factory_(params.http_auth_handler_factory), 110 http_auth_handler_factory_(params.http_auth_handler_factory),
110 proxy_service_(params.proxy_service), 111 proxy_service_(params.proxy_service),
111 ssl_config_service_(params.ssl_config_service), 112 ssl_config_service_(params.ssl_config_service),
112 normal_socket_pool_manager_( 113 normal_socket_pool_manager_(
113 CreateSocketPoolManager(NORMAL_SOCKET_POOL, params)), 114 CreateSocketPoolManager(NORMAL_SOCKET_POOL, params)),
114 websocket_socket_pool_manager_( 115 websocket_socket_pool_manager_(
115 CreateSocketPoolManager(WEBSOCKET_SOCKET_POOL, params)), 116 CreateSocketPoolManager(WEBSOCKET_SOCKET_POOL, params)),
116 quic_stream_factory_(params.host_resolver, 117 quic_stream_factory_(
117 params.client_socket_factory ? 118 params.host_resolver,
118 params.client_socket_factory : 119 params.client_socket_factory
119 net::ClientSocketFactory::GetDefaultFactory(), 120 ? params.client_socket_factory
120 params.http_server_properties, 121 : net::ClientSocketFactory::GetDefaultFactory(),
121 params.cert_verifier, 122 params.http_server_properties,
122 params.channel_id_service, 123 params.cert_verifier,
123 params.transport_security_state, 124 params.channel_id_service,
124 params.quic_crypto_client_stream_factory, 125 params.transport_security_state,
125 params.quic_random ? params.quic_random : 126 params.quic_crypto_client_stream_factory,
126 QuicRandom::GetInstance(), 127 params.quic_random ? params.quic_random : QuicRandom::GetInstance(),
127 params.quic_clock ? params. quic_clock : 128 params.quic_clock ? params.quic_clock : new QuicClock(),
128 new QuicClock(), 129 params.quic_max_packet_length,
129 params.quic_max_packet_length, 130 params.quic_user_agent_id,
130 params.quic_user_agent_id, 131 params.quic_supported_versions,
131 params.quic_supported_versions, 132 params.enable_quic_port_selection,
132 params.enable_quic_port_selection, 133 params.enable_quic_time_based_loss_detection,
133 params.enable_quic_time_based_loss_detection, 134 params.quic_always_require_handshake_confirmation,
134 params.quic_connection_options), 135 params.quic_connection_options),
135 spdy_session_pool_(params.host_resolver, 136 spdy_session_pool_(params.host_resolver,
136 params.ssl_config_service, 137 params.ssl_config_service,
137 params.http_server_properties, 138 params.http_server_properties,
138 params.transport_security_state, 139 params.transport_security_state,
139 params.force_spdy_single_domain, 140 params.force_spdy_single_domain,
140 params.enable_spdy_compression, 141 params.enable_spdy_compression,
141 params.enable_spdy_ping_based_connection_checking, 142 params.enable_spdy_ping_based_connection_checking,
142 params.spdy_default_protocol, 143 params.spdy_default_protocol,
143 params.spdy_stream_initial_recv_window_size, 144 params.spdy_stream_initial_recv_window_size,
144 params.spdy_initial_max_concurrent_streams, 145 params.spdy_initial_max_concurrent_streams,
145 params.spdy_max_concurrent_streams_limit, 146 params.spdy_max_concurrent_streams_limit,
146 params.time_func, 147 params.time_func,
147 params.trusted_spdy_proxy), 148 params.trusted_spdy_proxy),
148 http_stream_factory_(new HttpStreamFactoryImpl(this, false)), 149 http_stream_factory_(new HttpStreamFactoryImpl(this, false)),
149 http_stream_factory_for_websocket_( 150 http_stream_factory_for_websocket_(new HttpStreamFactoryImpl(this, true)),
150 new HttpStreamFactoryImpl(this, true)),
151 params_(params) { 151 params_(params) {
152 DCHECK(proxy_service_); 152 DCHECK(proxy_service_);
153 DCHECK(ssl_config_service_.get()); 153 DCHECK(ssl_config_service_.get());
154 CHECK(http_server_properties_); 154 CHECK(http_server_properties_);
155 155
156 for (int i = ALTERNATE_PROTOCOL_MINIMUM_VALID_VERSION; 156 for (int i = ALTERNATE_PROTOCOL_MINIMUM_VALID_VERSION;
157 i <= ALTERNATE_PROTOCOL_MAXIMUM_VALID_VERSION; ++i) { 157 i <= ALTERNATE_PROTOCOL_MAXIMUM_VALID_VERSION; ++i) {
158 enabled_protocols_[i - ALTERNATE_PROTOCOL_MINIMUM_VALID_VERSION] = false; 158 enabled_protocols_[i - ALTERNATE_PROTOCOL_MINIMUM_VALID_VERSION] = false;
159 } 159 }
160 160
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 case WEBSOCKET_SOCKET_POOL: 308 case WEBSOCKET_SOCKET_POOL:
309 return websocket_socket_pool_manager_.get(); 309 return websocket_socket_pool_manager_.get();
310 default: 310 default:
311 NOTREACHED(); 311 NOTREACHED();
312 break; 312 break;
313 } 313 }
314 return NULL; 314 return NULL;
315 } 315 }
316 316
317 } // namespace net 317 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698