Internal QUICHE change PiperOrigin-RevId: 319274555 Change-Id: I25dd6916985f6f48eb92b7e806e449e6e2fdb925
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc index 2b7b11e..1943d9c 100644 --- a/quic/core/quic_sent_packet_manager.cc +++ b/quic/core/quic_sent_packet_manager.cc
@@ -264,6 +264,9 @@ if (config.HasClientSentConnectionOption(kTLPR, perspective)) { enable_half_rtt_tail_loss_probe_ = true; } + if (config.HasClientRequestedIndependentOption(kTLPR, perspective)) { + enable_half_rtt_tail_loss_probe_ = true; + } if (config.HasClientSentConnectionOption(kNRTO, perspective)) { use_new_rto_ = true; }
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc index 89c9c89..e938017 100644 --- a/quic/core/quic_sent_packet_manager_test.cc +++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -4121,6 +4121,34 @@ manager_.GetRetransmissionTime()); } +TEST_F(QuicSentPacketManagerTest, ClientOnlyTLPRServer) { + QuicConfig config; + QuicTagVector options; + + options.push_back(kTLPR); + config.SetClientConnectionOptions(options); + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); + manager_.SetFromConfig(config); + // No change if the server receives client options. + EXPECT_FALSE( + QuicSentPacketManagerPeer::GetEnableHalfRttTailLossProbe(&manager_)); +} + +TEST_F(QuicSentPacketManagerTest, ClientOnlyTLPR) { + QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); + QuicConfig config; + QuicTagVector options; + + options.push_back(kTLPR); + config.SetClientConnectionOptions(options); + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); + manager_.SetFromConfig(config); + EXPECT_TRUE( + QuicSentPacketManagerPeer::GetEnableHalfRttTailLossProbe(&manager_)); +} + } // namespace } // namespace test } // namespace quic