Always support SPAD on the client side. Unhide the feature from connection option SPAD and QUICHE flag quic_always_support_server_preferred_address. PiperOrigin-RevId: 685877821
diff --git a/quiche/quic/core/quic_config.cc b/quiche/quic/core/quic_config.cc index 47027c5..6e3f8d4 100644 --- a/quiche/quic/core/quic_config.cc +++ b/quiche/quic/core/quic_config.cc
@@ -1484,7 +1484,8 @@ } bool QuicConfig::SupportsServerPreferredAddress(Perspective perspective) const { - return HasClientSentConnectionOption(kSPAD, perspective) || + return perspective == Perspective::IS_CLIENT || + HasClientSentConnectionOption(kSPAD, perspective) || GetQuicFlag(quic_always_support_server_preferred_address); }
diff --git a/quiche/quic/core/quic_config_test.cc b/quiche/quic/core/quic_config_test.cc index c706285..a157eaa 100644 --- a/quiche/quic/core/quic_config_test.cc +++ b/quiche/quic/core/quic_config_test.cc
@@ -609,7 +609,7 @@ EXPECT_TRUE(config_.SupportsServerPreferredAddress(Perspective::IS_SERVER)); SetQuicFlag(quic_always_support_server_preferred_address, false); - EXPECT_FALSE(config_.SupportsServerPreferredAddress(Perspective::IS_CLIENT)); + EXPECT_TRUE(config_.SupportsServerPreferredAddress(Perspective::IS_CLIENT)); EXPECT_FALSE(config_.SupportsServerPreferredAddress(Perspective::IS_SERVER)); QuicTagVector copt;
diff --git a/quiche/quic/core/quic_connection_test.cc b/quiche/quic/core/quic_connection_test.cc index 506acf5..c6e63d9 100644 --- a/quiche/quic/core/quic_connection_test.cc +++ b/quiche/quic/core/quic_connection_test.cc
@@ -1511,7 +1511,6 @@ connection_.RemoveEncrypter(ENCRYPTION_INITIAL); connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE); - config.SetConnectionOptionsToSend(QuicTagVector{kSPAD}); QuicConfigPeer::SetReceivedStatelessResetToken(&config, kTestStatelessResetToken); QuicConfigPeer::SetReceivedAlternateServerAddress(&config, @@ -3136,7 +3135,6 @@ connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE); QuicConfig config; - config.SetConnectionOptionsToSend(QuicTagVector{kSPAD}); QuicConfigPeer::SetReceivedStatelessResetToken(&config, kTestStatelessResetToken); QuicConfigPeer::SetReceivedAlternateServerAddress(&config,