Remove connection option "RVCM" after ietf quic connection migration launch. Protected by FLAGS_quic_reloadable_flag_quic_remove_connection_migration_connection_option. PiperOrigin-RevId: 398530976
diff --git a/quic/core/crypto/crypto_protocol.h b/quic/core/crypto/crypto_protocol.h index 15f66e2..13ec7fd 100644 --- a/quic/core/crypto/crypto_protocol.h +++ b/quic/core/crypto/crypto_protocol.h
@@ -258,6 +258,8 @@ const QuicTag kELDT = TAG('E', 'L', 'D', 'T'); // Enable Loss Detection Tuning +// TODO(haoyuewang) Remove RVCM option once +// --quic_remove_connection_migration_connection_option is deprecated. const QuicTag kRVCM = TAG('R', 'V', 'C', 'M'); // Validate the new address // upon client address change.
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc index 6a1c4a8..3e94bf9 100644 --- a/quic/core/http/end_to_end_test.cc +++ b/quic/core/http/end_to_end_test.cc
@@ -378,7 +378,10 @@ copt.push_back(kILD0); } copt.push_back(kPLE1); - copt.push_back(kRVCM); + if (!GetQuicReloadableFlag( + quic_remove_connection_migration_connection_option)) { + copt.push_back(kRVCM); + } client_config_.SetConnectionOptionsToSend(copt); // Start the server first, because CreateQuicClient() attempts
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index 431382f..b52d4d1 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -638,10 +638,17 @@ if (config.HasClientSentConnectionOption(kDFER, perspective_)) { defer_send_in_response_to_packets_ = false; } + const bool remove_connection_migration_connection_option = + GetQuicReloadableFlag(quic_remove_connection_migration_connection_option); + if (remove_connection_migration_connection_option) { + QUIC_RELOADABLE_FLAG_COUNT( + quic_remove_connection_migration_connection_option); + } if (framer_.version().HasIetfQuicFrames() && use_path_validator_ && count_bytes_on_alternative_path_separately_ && GetQuicReloadableFlag(quic_server_reverse_validate_new_path3) && - config.HasClientSentConnectionOption(kRVCM, perspective_)) { + (remove_connection_migration_connection_option || + config.HasClientSentConnectionOption(kRVCM, perspective_))) { QUIC_CODE_COUNT_N(quic_server_reverse_validate_new_path3, 6, 6); validate_client_addresses_ = true; }
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index cc94971..789baaf 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -1320,12 +1320,15 @@ void set_perspective(Perspective perspective) { connection_.set_perspective(perspective); if (perspective == Perspective::IS_SERVER) { - QuicConfig config; - QuicTagVector connection_options; - connection_options.push_back(kRVCM); - config.SetInitialReceivedConnectionOptions(connection_options); - EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); - connection_.SetFromConfig(config); + if (!GetQuicReloadableFlag( + quic_remove_connection_migration_connection_option)) { + QuicConfig config; + QuicTagVector connection_options; + connection_options.push_back(kRVCM); + config.SetInitialReceivedConnectionOptions(connection_options); + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + connection_.SetFromConfig(config); + } connection_.set_can_truncate_connection_ids(true); QuicConnectionPeer::SetNegotiatedVersion(&connection_); @@ -14366,10 +14369,13 @@ TEST_P(QuicConnectionTest, PathValidationFailedOnClientDueToLackOfServerConnectionId) { - QuicConfig config; - config.SetConnectionOptionsToSend({kRVCM}); - EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); - connection_.SetFromConfig(config); + if (!GetQuicReloadableFlag( + quic_remove_connection_migration_connection_option)) { + QuicConfig config; + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + connection_.SetFromConfig(config); + config.SetConnectionOptionsToSend({kRVCM}); + } if (!connection_.connection_migration_use_new_cid()) { return; } @@ -14391,10 +14397,13 @@ TEST_P(QuicConnectionTest, PathValidationFailedOnClientDueToLackOfClientConnectionIdTheSecondTime) { - QuicConfig config; - config.SetConnectionOptionsToSend({kRVCM}); - EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); - connection_.SetFromConfig(config); + if (!GetQuicReloadableFlag( + quic_remove_connection_migration_connection_option)) { + QuicConfig config; + config.SetConnectionOptionsToSend({kRVCM}); + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + connection_.SetFromConfig(config); + } if (!connection_.connection_migration_use_new_cid()) { return; } @@ -14480,10 +14489,13 @@ } TEST_P(QuicConnectionTest, ServerConnectionIdRetiredUponPathValidationFailure) { - QuicConfig config; - config.SetConnectionOptionsToSend({kRVCM}); - EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); - connection_.SetFromConfig(config); + if (!GetQuicReloadableFlag( + quic_remove_connection_migration_connection_option)) { + QuicConfig config; + config.SetConnectionOptionsToSend({kRVCM}); + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + connection_.SetFromConfig(config); + } if (!connection_.connection_migration_use_new_cid()) { return; } @@ -14527,10 +14539,13 @@ TEST_P(QuicConnectionTest, MigratePathDirectlyFailedDueToLackOfServerConnectionId) { - QuicConfig config; - config.SetConnectionOptionsToSend({kRVCM}); - EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); - connection_.SetFromConfig(config); + if (!GetQuicReloadableFlag( + quic_remove_connection_migration_connection_option)) { + QuicConfig config; + config.SetConnectionOptionsToSend({kRVCM}); + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + connection_.SetFromConfig(config); + } if (!connection_.connection_migration_use_new_cid()) { return; } @@ -14547,10 +14562,13 @@ TEST_P(QuicConnectionTest, MigratePathDirectlyFailedDueToLackOfClientConnectionIdTheSecondTime) { - QuicConfig config; - config.SetConnectionOptionsToSend({kRVCM}); - EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); - connection_.SetFromConfig(config); + if (!GetQuicReloadableFlag( + quic_remove_connection_migration_connection_option)) { + QuicConfig config; + config.SetConnectionOptionsToSend({kRVCM}); + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + connection_.SetFromConfig(config); + } if (!connection_.connection_migration_use_new_cid()) { return; } @@ -14872,10 +14890,13 @@ } TEST_P(QuicConnectionTest, ServerRetireSelfIssuedConnectionId) { - QuicConfig config; - config.SetConnectionOptionsToSend({kRVCM}); - EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); - connection_.SetFromConfig(config); + if (!GetQuicReloadableFlag( + quic_remove_connection_migration_connection_option)) { + QuicConfig config; + config.SetConnectionOptionsToSend({kRVCM}); + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + connection_.SetFromConfig(config); + } if (!connection_.connection_migration_use_new_cid()) { return; } @@ -15329,10 +15350,13 @@ } TEST_P(QuicConnectionTest, AckElicitingFrames) { - QuicConfig config; - config.SetConnectionOptionsToSend({kRVCM}); - EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); - connection_.SetFromConfig(config); + if (!GetQuicReloadableFlag( + quic_remove_connection_migration_connection_option)) { + QuicConfig config; + config.SetConnectionOptionsToSend({kRVCM}); + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); + connection_.SetFromConfig(config); + } if (!version().HasIetfQuicFrames() || !connection_.connection_migration_use_new_cid() || !GetQuicReloadableFlag(quic_add_missing_update_ack_timeout)) {
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h index 125cbc0..dfee754 100644 --- a/quic/core/quic_flags_list.h +++ b/quic/core/quic_flags_list.h
@@ -73,6 +73,8 @@ QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_drop_unsent_path_response, true) // If true, enable server retransmittable on wire PING. QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_enable_server_on_wire_ping, true) +// If true, ietf connection migration is no longer conditioned on connection option RVCM. +QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_remove_connection_migration_connection_option, true) // If true, ignore peer_max_ack_delay during handshake. QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_ignore_peer_max_ack_delay_during_handshake, true) // If true, include stream information in idle timeout connection close detail.