Automated g4 rollback of changelist 257008406. *** Reason for rollback *** To allow this flag to be turned off in chromium due to b/137681973. *** Original change description *** gfe-relnote: Deprecate gfe2_reloadable_flag_quic_simplify_stop_waiting. *** PiperOrigin-RevId: 258640921 Change-Id: I26998bd7dfc8fdeb297ce4e4f77d2e06b65dd19d
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index ecab751..22ee18a 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -991,8 +991,12 @@ // If the incoming ack's packets set expresses received packets: peer is still // acking packets which we never care about. // Send an ack to raise the high water mark. - const bool send_stop_waiting = - no_stop_waiting_frames_ ? false : GetLeastUnacked() > start; + bool send_stop_waiting = GetLeastUnacked() > start; + if (GetQuicReloadableFlag(quic_simplify_stop_waiting) && + no_stop_waiting_frames_) { + QUIC_RELOADABLE_FLAG_COUNT(quic_simplify_stop_waiting); + send_stop_waiting = false; + } PostProcessAfterAckFrame(send_stop_waiting, ack_result == PACKETS_NEWLY_ACKED); processing_ack_frame_ = false;
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h index 5fdffee..59a3656 100644 --- a/quic/core/quic_connection.h +++ b/quic/core/quic_connection.h
@@ -1243,6 +1243,7 @@ // Indicates how many consecutive times an ack has arrived which indicates // the peer needs to stop waiting for some packets. + // TODO(fayang): remove this when deprecating quic_simplify_stop_waiting. int stop_waiting_count_; // Indicates the retransmission alarm needs to be set.
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index 6b5b943..ee7b651 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -2604,13 +2604,18 @@ connection_.SendStreamDataWithString(3, "foofoofoo", 9, NO_FIN); // Ack bundled. if (GetParam().no_stop_waiting) { - // Do not ACK acks. - EXPECT_EQ(1u, writer_->frame_count()); + if (GetQuicReloadableFlag(quic_simplify_stop_waiting)) { + // Do not ACK acks. + EXPECT_EQ(1u, writer_->frame_count()); + } else { + EXPECT_EQ(2u, writer_->frame_count()); + } } else { EXPECT_EQ(3u, writer_->frame_count()); } EXPECT_EQ(1u, writer_->stream_frames().size()); - if (GetParam().no_stop_waiting) { + if (GetParam().no_stop_waiting && + GetQuicReloadableFlag(quic_simplify_stop_waiting)) { EXPECT_TRUE(writer_->ack_frames().empty()); } else { EXPECT_FALSE(writer_->ack_frames().empty()); @@ -6530,13 +6535,19 @@ // Check that ack is bundled with outgoing data and the delayed ack // alarm is reset. if (GetParam().no_stop_waiting) { - // Do not ACK acks. - EXPECT_EQ(1u, writer_->frame_count()); + if (GetQuicReloadableFlag(quic_simplify_stop_waiting)) { + // Do not ACK acks. + EXPECT_EQ(1u, writer_->frame_count()); + } else { + EXPECT_EQ(2u, writer_->frame_count()); + EXPECT_TRUE(writer_->stop_waiting_frames().empty()); + } } else { EXPECT_EQ(3u, writer_->frame_count()); EXPECT_FALSE(writer_->stop_waiting_frames().empty()); } - if (GetParam().no_stop_waiting) { + if (GetParam().no_stop_waiting && + GetQuicReloadableFlag(quic_simplify_stop_waiting)) { EXPECT_TRUE(writer_->ack_frames().empty()); } else { EXPECT_FALSE(writer_->ack_frames().empty()); @@ -7976,8 +7987,12 @@ connection_.GetPingAlarm()->Fire(); size_t padding_frame_count = writer_->padding_frames().size(); if (GetParam().no_stop_waiting) { - // Do not ACK acks. - EXPECT_EQ(padding_frame_count + 1u, writer_->frame_count()); + if (GetQuicReloadableFlag(quic_simplify_stop_waiting)) { + // Do not ACK acks. + EXPECT_EQ(padding_frame_count + 1u, writer_->frame_count()); + } else { + EXPECT_EQ(padding_frame_count + 2u, writer_->frame_count()); + } } else { EXPECT_EQ(padding_frame_count + 3u, writer_->frame_count()); }
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc index 66b8ad6..9f53c3b 100644 --- a/quic/core/quic_versions.cc +++ b/quic/core/quic_versions.cc
@@ -452,6 +452,7 @@ // Enable necessary flags. SetQuicFlag(FLAGS_quic_supports_tls_handshake, true); SetQuicFlag(FLAGS_quic_headers_stream_id_in_v99, 60); + SetQuicReloadableFlag(quic_simplify_stop_waiting, true); SetQuicRestartFlag(quic_do_not_override_connection_id, true); SetQuicRestartFlag(quic_use_allocated_connection_ids, true); }