gfe-relnote: In QUIC, do not close connection if received an in-order ACK with decreased largest_acked. Protected by gfe2_reloadable_flag_quic_tolerate_reneging.
By dremel, this connection close occurs rarely in prod: https://screenshot.googleplex.com/jZpfvdY4nzk
Largest_acked can decrease currently in IETF QUIC, though that may change: https://github.com/quicwg/base-drafts/issues/2205
PiperOrigin-RevId: 238228491
Change-Id: If7586fb8da192dea4436a5572c76bb7aeb1a3227
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index f4f15cb..0d7ede9 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -975,7 +975,8 @@
if (!sent_packet_manager_.GetLargestObserved().IsInitialized() ||
largest_acked > sent_packet_manager_.GetLargestObserved()) {
visitor_->OnForwardProgressConfirmed();
- } else if (largest_acked < sent_packet_manager_.GetLargestObserved()) {
+ } else if (!sent_packet_manager_.tolerate_reneging() &&
+ largest_acked < sent_packet_manager_.GetLargestObserved()) {
QUIC_LOG(INFO) << ENDPOINT << "Peer's largest_observed packet decreased:"
<< largest_acked << " vs "
<< sent_packet_manager_.GetLargestObserved()