Do not increase max_packet_size in response to a peer advertising a higher value than we currently have.
This fixes a lot of broken tests in Chromium.
gfe-relnote: n/a (QUIC version not used in prod)
PiperOrigin-RevId: 290156638
Change-Id: I9831739d59df8bf38fff0ecb3026c5ef7c0649b8
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index ddb81f5..6ef2db8 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -473,7 +473,7 @@
if (config.HasReceivedMaxPacketSize()) {
peer_max_packet_size_ = config.ReceivedMaxPacketSize();
packet_creator_.SetMaxPacketLength(
- GetLimitedMaxPacketSize(peer_max_packet_size_));
+ GetLimitedMaxPacketSize(packet_creator_.max_packet_length()));
}
supports_release_time_ =
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index 0817d57..8dd8f67 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -2396,6 +2396,19 @@
EXPECT_EQ(kTestMaxPacketSize, connection_.max_packet_length());
}
+TEST_P(QuicConnectionTest, PeerCannotRaiseMaxPacketSize) {
+ EXPECT_EQ(Perspective::IS_CLIENT, connection_.perspective());
+
+ // SetFromConfig is always called after construction from InitializeSession.
+ EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
+ constexpr uint32_t kTestMaxPacketSize = 1450u;
+ QuicConfig config;
+ QuicConfigPeer::SetReceivedMaxPacketSize(&config, kTestMaxPacketSize);
+ connection_.SetFromConfig(config);
+
+ EXPECT_EQ(kDefaultMaxPacketSize, connection_.max_packet_length());
+}
+
TEST_P(QuicConnectionTest, SmallerServerMaxPacketSize) {
TestConnection connection(TestConnectionId(), kPeerAddress, helper_.get(),
alarm_factory_.get(), writer_.get(),