In quic, replace close_connection_after_five_rtos_ and max_consecutive_ptos_ with num_rtos_for_blackhole_detection_. refactoring only, not protected.
PiperOrigin-RevId: 314563551
Change-Id: I94912fe45de41259bceb683267aa7ab288e3a31d
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index a2c4245..d918730 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -260,7 +260,7 @@
send_version_negotiation_packet_with_prefixed_lengths_(false),
idle_timeout_connection_close_behavior_(
ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET),
- close_connection_after_five_rtos_(false),
+ num_rtos_for_blackhole_detection_(0),
uber_received_packet_manager_(&stats_),
stop_waiting_count_(0),
pending_retransmission_alarm_(false),
@@ -327,7 +327,6 @@
supports_release_time_(false),
release_time_into_future_(QuicTime::Delta::Zero()),
drop_incoming_retry_packets_(false),
- max_consecutive_ptos_(0),
bytes_received_before_address_validation_(0),
bytes_sent_before_address_validation_(0),
address_validated_(false),
@@ -572,18 +571,13 @@
}
uber_received_packet_manager_.SetFromConfig(config, perspective_);
if (config.HasClientSentConnectionOption(k5RTO, perspective_)) {
- close_connection_after_five_rtos_ = true;
+ num_rtos_for_blackhole_detection_ = 5;
}
if (sent_packet_manager_.pto_enabled()) {
- if (config.HasClientSentConnectionOption(k6PTO, perspective_)) {
- max_consecutive_ptos_ = 5;
- QUIC_CODE_COUNT(quic_close_connection_6pto);
- }
- if (config.HasClientSentConnectionOption(k7PTO, perspective_)) {
- max_consecutive_ptos_ = 6;
- }
- if (config.HasClientSentConnectionOption(k8PTO, perspective_)) {
- max_consecutive_ptos_ = 7;
+ if (config.HasClientSentConnectionOption(k6PTO, perspective_) ||
+ config.HasClientSentConnectionOption(k7PTO, perspective_) ||
+ config.HasClientSentConnectionOption(k8PTO, perspective_)) {
+ num_rtos_for_blackhole_detection_ = 5;
}
}
if (config.HasClientSentConnectionOption(kNSTP, perspective_)) {
@@ -4510,8 +4504,10 @@
if (!ShouldDetectBlackhole()) {
return QuicTime::Zero();
}
+ DCHECK_LT(0u, num_rtos_for_blackhole_detection_);
return clock_->ApproximateNow() +
- sent_packet_manager_.GetNetworkBlackholeDelay();
+ sent_packet_manager_.GetNetworkBlackholeDelay(
+ num_rtos_for_blackhole_detection_);
}
bool QuicConnection::ShouldDetectBlackhole() const {
@@ -4522,8 +4518,7 @@
if (!GetHandshakeTimeout().IsInfinite()) {
return false;
}
- return close_connection_after_five_rtos_ ||
- (sent_packet_manager_.pto_enabled() && max_consecutive_ptos_ > 0);
+ return num_rtos_for_blackhole_detection_ > 0;
}
QuicTime::Delta QuicConnection::GetHandshakeTimeout() const {
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index 6782e06..969da12 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -1420,9 +1420,8 @@
// a connection close packet is sent, but not after.
ConnectionCloseBehavior idle_timeout_connection_close_behavior_;
- // When true, close the QUIC connection after 5 RTOs. Due to the min rto of
- // 200ms, this is over 5 seconds.
- bool close_connection_after_five_rtos_;
+ // When > 0, close the QUIC connection after this number of RTOs.
+ size_t num_rtos_for_blackhole_detection_;
UberReceivedPacketManager uber_received_packet_manager_;
@@ -1640,10 +1639,6 @@
// Indicates whether received RETRY packets should be dropped.
bool drop_incoming_retry_packets_;
- // If max_consecutive_ptos_ > 0, close connection if consecutive PTOs is
- // greater than max_consecutive_ptos.
- size_t max_consecutive_ptos_;
-
// Bytes received before address validation. Only used when
// EnforceAntiAmplificationLimit returns true.
size_t bytes_received_before_address_validation_;
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index ed0e691..31ac454 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -32,9 +32,6 @@
// The path degrading delay is the sum of this number of consecutive RTO delays.
const size_t kNumRetransmissionDelaysForPathDegradingDelay = 2;
-// The blachkhole delay is the sum of this number of consecutive RTO delays.
-const size_t kNumRetransmissionDelaysForBlackholeDelay = 5;
-
// Ensure the handshake timer isnt't faster than 10ms.
// This limits the tenth retransmitted packet to 10s after the initial CHLO.
static const int64_t kMinHandshakeTimeoutMs = 10;
@@ -1140,9 +1137,10 @@
max_tail_loss_probes_ + kNumRetransmissionDelaysForPathDegradingDelay);
}
-const QuicTime::Delta QuicSentPacketManager::GetNetworkBlackholeDelay() const {
+const QuicTime::Delta QuicSentPacketManager::GetNetworkBlackholeDelay(
+ int8_t num_rtos_for_blackhole_detection) const {
return GetNConsecutiveRetransmissionTimeoutDelay(
- max_tail_loss_probes_ + kNumRetransmissionDelaysForBlackholeDelay);
+ max_tail_loss_probes_ + num_rtos_for_blackhole_detection);
}
const QuicTime::Delta QuicSentPacketManager::GetCryptoRetransmissionDelay()
diff --git a/quic/core/quic_sent_packet_manager.h b/quic/core/quic_sent_packet_manager.h
index 2513b82..ce8353d 100644
--- a/quic/core/quic_sent_packet_manager.h
+++ b/quic/core/quic_sent_packet_manager.h
@@ -212,7 +212,8 @@
const QuicTime::Delta GetPathDegradingDelay() const;
// Returns the current delay for detecting network blackhole.
- const QuicTime::Delta GetNetworkBlackholeDelay() const;
+ const QuicTime::Delta GetNetworkBlackholeDelay(
+ int8_t num_rtos_for_blackhole_detection) const;
const RttStats* GetRttStats() const { return &rtt_stats_; }