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(),