Add MaybeUpdateAckTimeout to OnAckFrequencyFrame as this frame type also instigates ack. PiperOrigin-RevId: 333093235 Change-Id: I8058c42cc2465cb8bf10b4f70ec17d4b459cd1b1
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index bf97fbc..2348191 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -1723,6 +1723,7 @@ << "Get AckFrequencyFrame in packet number space " << packet_number_space; } + MaybeUpdateAckTimeout(); return true; }
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index 60226f2..85b6224 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -2980,20 +2980,21 @@ if (!GetParam().version.HasIetfQuicFrames()) { return; } - - QuicAckFrequencyFrame frame; - frame.packet_tolerance = 3; - connection_.set_can_receive_ack_frequency_frame(); - connection_.OnDecryptedPacket(ENCRYPTION_FORWARD_SECURE); - connection_.OnAckFrequencyFrame(frame); - EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); - EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(39); - // Expect 13 acks, every 3rd packet. + // Expect 13 acks, every 3rd packet including the first packet with + // AckFrequencyFrame. EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(13); - // Receives packets 1 - 39. - for (size_t i = 1; i <= 39; ++i) { + EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); + + QuicAckFrequencyFrame ack_frequency_frame; + ack_frequency_frame.packet_tolerance = 3; + ProcessFramePacketAtLevel(1, QuicFrame(&ack_frequency_frame), + ENCRYPTION_FORWARD_SECURE); + + EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(38); + // Receives packets 2 - 39. + for (size_t i = 2; i <= 39; ++i) { ProcessDataPacket(i); } } @@ -3003,20 +3004,19 @@ if (!GetParam().version.HasIetfQuicFrames()) { return; } - - QuicAckFrequencyFrame frame; - frame.packet_tolerance = 3; connection_.set_can_receive_ack_frequency_frame(); - connection_.OnDecryptedPacket(ENCRYPTION_HANDSHAKE); - connection_.OnAckFrequencyFrame(frame); - connection_.OnDecryptedPacket(ENCRYPTION_FORWARD_SECURE); - EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); - EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(60); - // Expect 30 acks, every 2nd (instead of 3rd) packet. + QuicAckFrequencyFrame ack_frequency_frame; + ack_frequency_frame.packet_tolerance = 3; + ProcessFramePacketAtLevel(1, QuicFrame(&ack_frequency_frame), + ENCRYPTION_HANDSHAKE); + + // Expect 30 acks, every 2nd (instead of 3rd) packet including the first + // packet with AckFrequencyFrame. EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(30); - // Receives packets 1 - 60. - for (size_t i = 1; i <= 60; ++i) { + EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(60); + // Receives packets 2 - 61. + for (size_t i = 2; i <= 61; ++i) { ProcessDataPacket(i); } }