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

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

Issue 2320313003: Revert of Remove obsolete QUIC disabling code. (Closed)
Patch Set: Created 4 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
« no previous file with comments | « net/http/http_network_session.h ('k') | net/http/http_stream_factory_impl_job.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/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/atomic_sequence_num.h" 9 #include "base/atomic_sequence_num.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 59
60 // The maximum receive window sizes for HTTP/2 sessions and streams. 60 // The maximum receive window sizes for HTTP/2 sessions and streams.
61 const int32_t kSpdySessionMaxRecvWindowSize = 15 * 1024 * 1024; // 15 MB 61 const int32_t kSpdySessionMaxRecvWindowSize = 15 * 1024 * 1024; // 15 MB
62 const int32_t kSpdyStreamMaxRecvWindowSize = 6 * 1024 * 1024; // 6 MB 62 const int32_t kSpdyStreamMaxRecvWindowSize = 6 * 1024 * 1024; // 6 MB
63 // QUIC's socket receive buffer size. 63 // QUIC's socket receive buffer size.
64 // We should adaptively set this buffer size, but for now, we'll use a size 64 // We should adaptively set this buffer size, but for now, we'll use a size
65 // that seems large enough to receive data at line rate for most connections, 65 // that seems large enough to receive data at line rate for most connections,
66 // and does not consume "too much" memory. 66 // and does not consume "too much" memory.
67 const int32_t kQuicSocketReceiveBufferSize = 1024 * 1024; // 1MB 67 const int32_t kQuicSocketReceiveBufferSize = 1024 * 1024; // 1MB
68 68
69 // Number of recent connections to consider for certain thresholds
70 // that trigger disabling QUIC. E.g. disable QUIC if PUBLIC_RESET was
71 // received post handshake for at least 2 of 20 recent connections.
72 const int32_t kQuicMaxRecentDisabledReasons = 20;
73
69 HttpNetworkSession::Params::Params() 74 HttpNetworkSession::Params::Params()
70 : client_socket_factory(NULL), 75 : client_socket_factory(NULL),
71 host_resolver(NULL), 76 host_resolver(NULL),
72 cert_verifier(NULL), 77 cert_verifier(NULL),
73 channel_id_service(NULL), 78 channel_id_service(NULL),
74 transport_security_state(NULL), 79 transport_security_state(NULL),
75 cert_transparency_verifier(NULL), 80 cert_transparency_verifier(NULL),
76 ct_policy_enforcer(NULL), 81 ct_policy_enforcer(NULL),
77 proxy_service(NULL), 82 proxy_service(NULL),
78 ssl_config_service(NULL), 83 ssl_config_service(NULL),
(...skipping 15 matching lines...) Expand all
94 enable_quic(false), 99 enable_quic(false),
95 disable_quic_on_timeout_with_open_streams(false), 100 disable_quic_on_timeout_with_open_streams(false),
96 enable_quic_port_selection(true), 101 enable_quic_port_selection(true),
97 quic_always_require_handshake_confirmation(false), 102 quic_always_require_handshake_confirmation(false),
98 quic_disable_connection_pooling(false), 103 quic_disable_connection_pooling(false),
99 quic_load_server_info_timeout_srtt_multiplier(0.25f), 104 quic_load_server_info_timeout_srtt_multiplier(0.25f),
100 quic_enable_connection_racing(false), 105 quic_enable_connection_racing(false),
101 quic_enable_non_blocking_io(false), 106 quic_enable_non_blocking_io(false),
102 quic_disable_disk_cache(false), 107 quic_disable_disk_cache(false),
103 quic_prefer_aes(false), 108 quic_prefer_aes(false),
109 quic_max_number_of_lossy_connections(0),
110 quic_packet_loss_threshold(1.0f),
104 quic_socket_receive_buffer_size(kQuicSocketReceiveBufferSize), 111 quic_socket_receive_buffer_size(kQuicSocketReceiveBufferSize),
105 quic_delay_tcp_race(true), 112 quic_delay_tcp_race(true),
106 quic_max_server_configs_stored_in_properties(0u), 113 quic_max_server_configs_stored_in_properties(0u),
107 quic_clock(NULL), 114 quic_clock(NULL),
108 quic_random(NULL), 115 quic_random(NULL),
109 quic_max_packet_length(kDefaultMaxPacketSize), 116 quic_max_packet_length(kDefaultMaxPacketSize),
110 enable_user_alternate_protocol_ports(false), 117 enable_user_alternate_protocol_ports(false),
111 quic_crypto_client_stream_factory( 118 quic_crypto_client_stream_factory(
112 QuicCryptoClientStreamFactory::GetDefaultFactory()), 119 QuicCryptoClientStreamFactory::GetDefaultFactory()),
120 quic_max_recent_disabled_reasons(kQuicMaxRecentDisabledReasons),
121 quic_threshold_public_resets_post_handshake(0),
122 quic_threshold_timeouts_streams_open(0),
113 quic_close_sessions_on_ip_change(false), 123 quic_close_sessions_on_ip_change(false),
114 quic_idle_connection_timeout_seconds(kIdleConnectionTimeoutSeconds), 124 quic_idle_connection_timeout_seconds(kIdleConnectionTimeoutSeconds),
115 quic_reduced_ping_timeout_seconds(kPingTimeoutSecs), 125 quic_reduced_ping_timeout_seconds(kPingTimeoutSecs),
116 quic_packet_reader_yield_after_duration_milliseconds( 126 quic_packet_reader_yield_after_duration_milliseconds(
117 kQuicYieldAfterDurationMilliseconds), 127 kQuicYieldAfterDurationMilliseconds),
118 quic_disable_preconnect_if_0rtt(false), 128 quic_disable_preconnect_if_0rtt(false),
119 quic_migrate_sessions_on_network_change(false), 129 quic_migrate_sessions_on_network_change(false),
120 quic_migrate_sessions_early(false), 130 quic_migrate_sessions_early(false),
121 quic_allow_server_migration(false), 131 quic_allow_server_migration(false),
122 quic_disable_bidirectional_streams(false), 132 quic_disable_bidirectional_streams(false),
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 params.quic_user_agent_id, 172 params.quic_user_agent_id,
163 params.quic_supported_versions, 173 params.quic_supported_versions,
164 params.enable_quic_port_selection, 174 params.enable_quic_port_selection,
165 params.quic_always_require_handshake_confirmation, 175 params.quic_always_require_handshake_confirmation,
166 params.quic_disable_connection_pooling, 176 params.quic_disable_connection_pooling,
167 params.quic_load_server_info_timeout_srtt_multiplier, 177 params.quic_load_server_info_timeout_srtt_multiplier,
168 params.quic_enable_connection_racing, 178 params.quic_enable_connection_racing,
169 params.quic_enable_non_blocking_io, 179 params.quic_enable_non_blocking_io,
170 params.quic_disable_disk_cache, 180 params.quic_disable_disk_cache,
171 params.quic_prefer_aes, 181 params.quic_prefer_aes,
182 params.quic_max_number_of_lossy_connections,
183 params.quic_packet_loss_threshold,
184 params.quic_max_recent_disabled_reasons,
185 params.quic_threshold_public_resets_post_handshake,
186 params.quic_threshold_timeouts_streams_open,
172 params.quic_socket_receive_buffer_size, 187 params.quic_socket_receive_buffer_size,
173 params.quic_delay_tcp_race, 188 params.quic_delay_tcp_race,
174 params.quic_max_server_configs_stored_in_properties, 189 params.quic_max_server_configs_stored_in_properties,
175 params.quic_close_sessions_on_ip_change, 190 params.quic_close_sessions_on_ip_change,
176 params.disable_quic_on_timeout_with_open_streams, 191 params.disable_quic_on_timeout_with_open_streams,
177 params.quic_idle_connection_timeout_seconds, 192 params.quic_idle_connection_timeout_seconds,
178 params.quic_reduced_ping_timeout_seconds, 193 params.quic_reduced_ping_timeout_seconds,
179 params.quic_packet_reader_yield_after_duration_milliseconds, 194 params.quic_packet_reader_yield_after_duration_milliseconds,
180 params.quic_migrate_sessions_on_network_change, 195 params.quic_migrate_sessions_on_network_change,
181 params.quic_migrate_sessions_early, 196 params.quic_migrate_sessions_early,
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 origins_to_force_quic_on->AppendString("'" + origin.ToString() + "'"); 329 origins_to_force_quic_on->AppendString("'" + origin.ToString() + "'");
315 } 330 }
316 dict->Set("origins_to_force_quic_on", std::move(origins_to_force_quic_on)); 331 dict->Set("origins_to_force_quic_on", std::move(origins_to_force_quic_on));
317 332
318 dict->SetDouble("load_server_info_timeout_srtt_multiplier", 333 dict->SetDouble("load_server_info_timeout_srtt_multiplier",
319 params_.quic_load_server_info_timeout_srtt_multiplier); 334 params_.quic_load_server_info_timeout_srtt_multiplier);
320 dict->SetBoolean("enable_connection_racing", 335 dict->SetBoolean("enable_connection_racing",
321 params_.quic_enable_connection_racing); 336 params_.quic_enable_connection_racing);
322 dict->SetBoolean("disable_disk_cache", params_.quic_disable_disk_cache); 337 dict->SetBoolean("disable_disk_cache", params_.quic_disable_disk_cache);
323 dict->SetBoolean("prefer_aes", params_.quic_prefer_aes); 338 dict->SetBoolean("prefer_aes", params_.quic_prefer_aes);
339 dict->SetInteger("max_number_of_lossy_connections",
340 params_.quic_max_number_of_lossy_connections);
341 dict->SetDouble("packet_loss_threshold", params_.quic_packet_loss_threshold);
324 dict->SetBoolean("delay_tcp_race", params_.quic_delay_tcp_race); 342 dict->SetBoolean("delay_tcp_race", params_.quic_delay_tcp_race);
325 dict->SetInteger("max_server_configs_stored_in_properties", 343 dict->SetInteger("max_server_configs_stored_in_properties",
326 params_.quic_max_server_configs_stored_in_properties); 344 params_.quic_max_server_configs_stored_in_properties);
327 dict->SetInteger("idle_connection_timeout_seconds", 345 dict->SetInteger("idle_connection_timeout_seconds",
328 params_.quic_idle_connection_timeout_seconds); 346 params_.quic_idle_connection_timeout_seconds);
329 dict->SetInteger("reduced_ping_timeout_seconds", 347 dict->SetInteger("reduced_ping_timeout_seconds",
330 params_.quic_reduced_ping_timeout_seconds); 348 params_.quic_reduced_ping_timeout_seconds);
331 dict->SetInteger( 349 dict->SetInteger(
332 "packet_reader_yield_after_duration_milliseconds", 350 "packet_reader_yield_after_duration_milliseconds",
333 params_.quic_packet_reader_yield_after_duration_milliseconds); 351 params_.quic_packet_reader_yield_after_duration_milliseconds);
334 dict->SetBoolean("disable_preconnect_if_0rtt", 352 dict->SetBoolean("disable_preconnect_if_0rtt",
335 params_.quic_disable_preconnect_if_0rtt); 353 params_.quic_disable_preconnect_if_0rtt);
336 dict->SetBoolean("disable_quic_on_timeout_with_open_streams", 354 dict->SetBoolean("disable_quic_on_timeout_with_open_streams",
337 params_.disable_quic_on_timeout_with_open_streams); 355 params_.disable_quic_on_timeout_with_open_streams);
338 dict->SetBoolean("is_quic_disabled", quic_stream_factory_.IsQuicDisabled()); 356 dict->SetString("disabled_reason",
357 quic_stream_factory_.QuicDisabledReasonString());
339 dict->SetBoolean("force_hol_blocking", params_.quic_force_hol_blocking); 358 dict->SetBoolean("force_hol_blocking", params_.quic_force_hol_blocking);
340 dict->SetBoolean("race_cert_verification", 359 dict->SetBoolean("race_cert_verification",
341 params_.quic_race_cert_verification); 360 params_.quic_race_cert_verification);
342 return std::move(dict); 361 return std::move(dict);
343 } 362 }
344 363
345 void HttpNetworkSession::CloseAllConnections() { 364 void HttpNetworkSession::CloseAllConnections() {
346 normal_socket_pool_manager_->FlushSocketPoolsWithError(ERR_ABORTED); 365 normal_socket_pool_manager_->FlushSocketPoolsWithError(ERR_ABORTED);
347 websocket_socket_pool_manager_->FlushSocketPoolsWithError(ERR_ABORTED); 366 websocket_socket_pool_manager_->FlushSocketPoolsWithError(ERR_ABORTED);
348 spdy_session_pool_.CloseCurrentSessions(ERR_ABORTED); 367 spdy_session_pool_.CloseCurrentSessions(ERR_ABORTED);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE: 422 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE:
404 break; 423 break;
405 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE: 424 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE:
406 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL: 425 case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL:
407 CloseIdleConnections(); 426 CloseIdleConnections();
408 break; 427 break;
409 } 428 }
410 } 429 }
411 430
412 } // namespace net 431 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_session.h ('k') | net/http/http_stream_factory_impl_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698