Connect up IETF QUIC Max ACK Delay transport parameter
This CL sets the QuicSentPacketManager's ACK Delay from the
MAX ACK Delay transport parameter.
gfe-relnote: N/A done only if IETF QUIC enabled & negotiated.
PiperOrigin-RevId: 260502360
Change-Id: Idd8a9d0fe36e7ab0794aa7532d608489866248eb
diff --git a/quic/core/quic_config_test.cc b/quic/core/quic_config_test.cc
index 84e89c1..630e67a 100644
--- a/quic/core/quic_config_test.cc
+++ b/quic/core/quic_config_test.cc
@@ -56,6 +56,8 @@
}
TEST_P(QuicConfigTest, ProcessClientHello) {
+ const uint32_t kTestMaxAckDelayMs =
+ static_cast<uint32_t>(kDefaultDelayedAckTimeMs + 1);
QuicConfig client_config;
QuicTagVector cgst;
cgst.push_back(kQBIC);
@@ -70,6 +72,7 @@
QuicTagVector copt;
copt.push_back(kTBBR);
client_config.SetConnectionOptionsToSend(copt);
+ client_config.SetMaxAckDelayToSendMs(kTestMaxAckDelayMs);
CryptoHandshakeMessage msg;
client_config.ToHandshakeMessage(&msg, GetParam());
@@ -99,6 +102,12 @@
2 * kInitialStreamFlowControlWindowForTest);
EXPECT_EQ(config_.ReceivedInitialSessionFlowControlWindowBytes(),
2 * kInitialSessionFlowControlWindowForTest);
+ if (GetQuicReloadableFlag(quic_negotiate_ack_delay_time)) {
+ EXPECT_TRUE(config_.HasReceivedMaxAckDelayMs());
+ EXPECT_EQ(kTestMaxAckDelayMs, config_.ReceivedMaxAckDelayMs());
+ } else {
+ EXPECT_FALSE(config_.HasReceivedMaxAckDelayMs());
+ }
}
TEST_P(QuicConfigTest, ProcessServerHello) {
@@ -106,6 +115,8 @@
host.FromString("127.0.3.1");
const QuicSocketAddress kTestServerAddress = QuicSocketAddress(host, 1234);
const QuicUint128 kTestResetToken = MakeQuicUint128(0, 10111100001);
+ const uint32_t kTestMaxAckDelayMs =
+ static_cast<uint32_t>(kDefaultDelayedAckTimeMs + 1);
QuicConfig server_config;
QuicTagVector cgst;
cgst.push_back(kQBIC);
@@ -119,6 +130,7 @@
2 * kInitialSessionFlowControlWindowForTest);
server_config.SetAlternateServerAddressToSend(kTestServerAddress);
server_config.SetStatelessResetTokenToSend(kTestResetToken);
+ server_config.SetMaxAckDelayToSendMs(kTestMaxAckDelayMs);
CryptoHandshakeMessage msg;
server_config.ToHandshakeMessage(&msg, GetParam());
std::string error_details;
@@ -137,6 +149,12 @@
EXPECT_EQ(kTestServerAddress, config_.ReceivedAlternateServerAddress());
EXPECT_TRUE(config_.HasReceivedStatelessResetToken());
EXPECT_EQ(kTestResetToken, config_.ReceivedStatelessResetToken());
+ if (GetQuicReloadableFlag(quic_negotiate_ack_delay_time)) {
+ EXPECT_TRUE(config_.HasReceivedMaxAckDelayMs());
+ EXPECT_EQ(kTestMaxAckDelayMs, config_.ReceivedMaxAckDelayMs());
+ } else {
+ EXPECT_FALSE(config_.HasReceivedMaxAckDelayMs());
+ }
}
TEST_P(QuicConfigTest, MissingOptionalValuesInCHLO) {