Index: net/quic/quic_config.cc |
diff --git a/net/quic/quic_config.cc b/net/quic/quic_config.cc |
index d2a10a439acce19399a716bf368ba503954a732b..bb686e7fbbc4bd0603bae13e66a41f030edacd42 100644 |
--- a/net/quic/quic_config.cc |
+++ b/net/quic/quic_config.cc |
@@ -431,7 +431,7 @@ QuicConfig::QuicConfig() |
congestion_feedback_(kCGST, PRESENCE_REQUIRED), |
connection_options_(kCOPT, PRESENCE_OPTIONAL), |
idle_connection_state_lifetime_seconds_(kICSL, PRESENCE_REQUIRED), |
- keepalive_timeout_seconds_(kKATO, PRESENCE_OPTIONAL), |
+ silent_close_(kSCLS, PRESENCE_OPTIONAL), |
max_streams_per_connection_(kMSPC, PRESENCE_REQUIRED), |
bytes_for_connection_id_(kTCID, PRESENCE_OPTIONAL), |
initial_round_trip_time_us_(kIRTT, PRESENCE_OPTIONAL), |
@@ -493,9 +493,12 @@ QuicTime::Delta QuicConfig::IdleConnectionStateLifetime() const { |
idle_connection_state_lifetime_seconds_.GetUint32()); |
} |
-QuicTime::Delta QuicConfig::KeepaliveTimeout() const { |
- return QuicTime::Delta::FromSeconds( |
- keepalive_timeout_seconds_.GetUint32()); |
+void QuicConfig::SetSilentClose(bool silent_close) { |
+ silent_close_.set(silent_close ? 1 : 0, silent_close ? 1 : 0); |
+} |
+ |
+bool QuicConfig::SilentClose() const { |
+ return silent_close_.GetUint32() > 0; |
} |
void QuicConfig::SetMaxStreamsPerConnection(size_t max_streams, |
@@ -631,7 +634,6 @@ bool QuicConfig::negotiated() const { |
// ProcessServerHello. |
return congestion_feedback_.negotiated() && |
idle_connection_state_lifetime_seconds_.negotiated() && |
- keepalive_timeout_seconds_.negotiated() && |
max_streams_per_connection_.negotiated(); |
} |
@@ -641,8 +643,11 @@ void QuicConfig::SetDefaults() { |
congestion_feedback_.set(congestion_feedback, kQBIC); |
idle_connection_state_lifetime_seconds_.set(kMaximumIdleTimeoutSecs, |
kDefaultIdleTimeoutSecs); |
- // kKATO is optional. Return 0 if not negotiated. |
- keepalive_timeout_seconds_.set(0, 0); |
+ if (FLAGS_quic_allow_silent_close) { |
+ silent_close_.set(1, 0); |
+ } else { |
+ silent_close_.set(0, 0); |
+ } |
SetMaxStreamsPerConnection(kDefaultMaxStreamsPerConnection, |
kDefaultMaxStreamsPerConnection); |
max_time_before_crypto_handshake_ = |
@@ -659,7 +664,7 @@ void QuicConfig::SetDefaults() { |
void QuicConfig::ToHandshakeMessage(CryptoHandshakeMessage* out) const { |
congestion_feedback_.ToHandshakeMessage(out); |
idle_connection_state_lifetime_seconds_.ToHandshakeMessage(out); |
- keepalive_timeout_seconds_.ToHandshakeMessage(out); |
+ silent_close_.ToHandshakeMessage(out); |
max_streams_per_connection_.ToHandshakeMessage(out); |
bytes_for_connection_id_.ToHandshakeMessage(out); |
initial_round_trip_time_us_.ToHandshakeMessage(out); |
@@ -686,8 +691,8 @@ QuicErrorCode QuicConfig::ProcessPeerHello( |
peer_hello, hello_type, error_details); |
} |
if (error == QUIC_NO_ERROR) { |
- error = keepalive_timeout_seconds_.ProcessPeerHello( |
- peer_hello, hello_type, error_details); |
+ error = |
+ silent_close_.ProcessPeerHello(peer_hello, hello_type, error_details); |
} |
if (error == QUIC_NO_ERROR) { |
error = max_streams_per_connection_.ProcessPeerHello( |