Fix auto-setting IETF stream flow control limits
The code would set the IETF limits in the old setter in the hopes of having them used when they weren't individually set. But since they were set in the constructor that didn't work. The new code checks the old value from the getter, which gets us the requested behavior of using the old setter value in the absence of other information.
gfe-relnote: fix IETF flow control, protected by disabled TLS flag
PiperOrigin-RevId: 274898114
Change-Id: I77ddd45b00715a15cc301c4f48833a28184b8685
diff --git a/quic/core/quic_config_test.cc b/quic/core/quic_config_test.cc
index 070e809..e0eb304 100644
--- a/quic/core/quic_config_test.cc
+++ b/quic/core/quic_config_test.cc
@@ -49,6 +49,36 @@
EXPECT_FALSE(config_.HasReceivedInitialMaxStreamDataBytesUnidirectional());
}
+TEST_P(QuicConfigTest, AutoSetIetfFlowControl) {
+ EXPECT_EQ(kMinimumFlowControlSendWindow,
+ config_.GetInitialStreamFlowControlWindowToSend());
+ EXPECT_EQ(kMinimumFlowControlSendWindow,
+ config_.GetInitialMaxStreamDataBytesIncomingBidirectionalToSend());
+ EXPECT_EQ(kMinimumFlowControlSendWindow,
+ config_.GetInitialMaxStreamDataBytesOutgoingBidirectionalToSend());
+ EXPECT_EQ(kMinimumFlowControlSendWindow,
+ config_.GetInitialMaxStreamDataBytesUnidirectionalToSend());
+ static const uint32_t kTestWindowSize = 1234567;
+ config_.SetInitialStreamFlowControlWindowToSend(kTestWindowSize);
+ EXPECT_EQ(kTestWindowSize, config_.GetInitialStreamFlowControlWindowToSend());
+ EXPECT_EQ(kTestWindowSize,
+ config_.GetInitialMaxStreamDataBytesIncomingBidirectionalToSend());
+ EXPECT_EQ(kTestWindowSize,
+ config_.GetInitialMaxStreamDataBytesOutgoingBidirectionalToSend());
+ EXPECT_EQ(kTestWindowSize,
+ config_.GetInitialMaxStreamDataBytesUnidirectionalToSend());
+ static const uint32_t kTestWindowSizeTwo = 2345678;
+ config_.SetInitialMaxStreamDataBytesIncomingBidirectionalToSend(
+ kTestWindowSizeTwo);
+ EXPECT_EQ(kTestWindowSize, config_.GetInitialStreamFlowControlWindowToSend());
+ EXPECT_EQ(kTestWindowSizeTwo,
+ config_.GetInitialMaxStreamDataBytesIncomingBidirectionalToSend());
+ EXPECT_EQ(kTestWindowSize,
+ config_.GetInitialMaxStreamDataBytesOutgoingBidirectionalToSend());
+ EXPECT_EQ(kTestWindowSize,
+ config_.GetInitialMaxStreamDataBytesUnidirectionalToSend());
+}
+
TEST_P(QuicConfigTest, ToHandshakeMessage) {
config_.SetInitialStreamFlowControlWindowToSend(
kInitialStreamFlowControlWindowForTest);