diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index 28f3923..a4b4099 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -328,7 +328,7 @@
   }
   if (support_multiple_cid_per_connection_) {
     QUIC_RESTART_FLAG_COUNT(
-        quic_dispatcher_support_multiple_cid_per_connection);
+        quic_dispatcher_support_multiple_cid_per_connection_v2);
   }
   QUIC_BUG_IF(GetSupportedVersions().empty())
       << "Trying to create dispatcher without any supported versions";
diff --git a/quic/core/quic_dispatcher.h b/quic/core/quic_dispatcher.h
index 75cdacf..14ca07c 100644
--- a/quic/core/quic_dispatcher.h
+++ b/quic/core/quic_dispatcher.h
@@ -455,8 +455,9 @@
       GetQuicRestartFlag(quic_use_reference_counted_sesssion_map);
   const bool support_multiple_cid_per_connection_ =
       use_reference_counted_session_map_ &&
-      GetQuicRestartFlag(quic_time_wait_list_support_multiple_cid) &&
-      GetQuicRestartFlag(quic_dispatcher_support_multiple_cid_per_connection);
+      GetQuicRestartFlag(quic_time_wait_list_support_multiple_cid_v2) &&
+      GetQuicRestartFlag(
+          quic_dispatcher_support_multiple_cid_per_connection_v2);
 };
 
 }  // namespace quic
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc
index a614199..b801228 100644
--- a/quic/core/quic_dispatcher_test.cc
+++ b/quic/core/quic_dispatcher_test.cc
@@ -1974,8 +1974,8 @@
   QuicDispatcherSupportMultipleConnectionIdPerConnectionTest()
       : QuicDispatcherTestBase(crypto_test_utils::ProofSourceForTesting()) {
     SetQuicRestartFlag(quic_use_reference_counted_sesssion_map, true);
-    SetQuicRestartFlag(quic_time_wait_list_support_multiple_cid, true);
-    SetQuicRestartFlag(quic_dispatcher_support_multiple_cid_per_connection,
+    SetQuicRestartFlag(quic_time_wait_list_support_multiple_cid_v2, true);
+    SetQuicRestartFlag(quic_dispatcher_support_multiple_cid_per_connection_v2,
                        true);
     dispatcher_ = std::make_unique<NiceMock<TestDispatcher>>(
         &config_, &crypto_config_, &version_manager_,
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 8a1a48a..b99ca34 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -70,7 +70,7 @@
 QUIC_FLAG(FLAGS_quic_reloadable_flag_send_quic_fallback_server_config_on_leto_error, false)
 QUIC_FLAG(FLAGS_quic_restart_flag_dont_fetch_quic_private_keys_from_leto, false)
 QUIC_FLAG(FLAGS_quic_restart_flag_http2_parse_priority_update_frame, false)
-QUIC_FLAG(FLAGS_quic_restart_flag_quic_dispatcher_support_multiple_cid_per_connection, false)
+QUIC_FLAG(FLAGS_quic_restart_flag_quic_dispatcher_support_multiple_cid_per_connection_v2, false)
 QUIC_FLAG(FLAGS_quic_restart_flag_quic_enable_zero_rtt_for_tls_v2, true)
 QUIC_FLAG(FLAGS_quic_restart_flag_quic_offload_pacing_to_usps2, false)
 QUIC_FLAG(FLAGS_quic_restart_flag_quic_server_temporarily_retain_tls_zero_rtt_keys, true)
@@ -79,5 +79,5 @@
 QUIC_FLAG(FLAGS_quic_restart_flag_quic_support_release_time_for_gso, false)
 QUIC_FLAG(FLAGS_quic_restart_flag_quic_testonly_default_false, false)
 QUIC_FLAG(FLAGS_quic_restart_flag_quic_testonly_default_true, true)
-QUIC_FLAG(FLAGS_quic_restart_flag_quic_time_wait_list_support_multiple_cid, false)
+QUIC_FLAG(FLAGS_quic_restart_flag_quic_time_wait_list_support_multiple_cid_v2, false)
 QUIC_FLAG(FLAGS_quic_restart_flag_quic_use_reference_counted_sesssion_map, false)
diff --git a/quic/core/quic_time_wait_list_manager.cc b/quic/core/quic_time_wait_list_manager.cc
index 11fca70..b59c5bc 100644
--- a/quic/core/quic_time_wait_list_manager.cc
+++ b/quic/core/quic_time_wait_list_manager.cc
@@ -82,7 +82,7 @@
       writer_(writer),
       visitor_(visitor) {
   if (use_indirect_connection_id_map_) {
-    QUIC_RESTART_FLAG_COUNT(quic_time_wait_list_support_multiple_cid);
+    QUIC_RESTART_FLAG_COUNT(quic_time_wait_list_support_multiple_cid_v2);
   }
   SetConnectionIdCleanUpAlarm();
 }
@@ -153,9 +153,14 @@
       GetQuicFlag(FLAGS_quic_time_wait_list_max_connections);
   DCHECK(connection_id_map_.empty() ||
          num_connections() < static_cast<size_t>(max_connections));
+  if (use_indirect_connection_id_map_ && new_connection_id) {
+    for (const auto& cid : info.active_connection_ids) {
+      visitor_->OnConnectionAddedToTimeWaitList(cid);
+    }
+  }
   AddConnectionIdDataToMap(canonical_connection_id, num_packets, action,
                            std::move(info));
-  if (new_connection_id) {
+  if (!use_indirect_connection_id_map_ && new_connection_id) {
     visitor_->OnConnectionAddedToTimeWaitList(canonical_connection_id);
   }
 }
diff --git a/quic/core/quic_time_wait_list_manager.h b/quic/core/quic_time_wait_list_manager.h
index ad6d45c..6dbd737 100644
--- a/quic/core/quic_time_wait_list_manager.h
+++ b/quic/core/quic_time_wait_list_manager.h
@@ -332,7 +332,7 @@
   // When this is default true, remove the connection_id argument of
   // AddConnectionIdToTimeWait.
   bool use_indirect_connection_id_map_ =
-      GetQuicRestartFlag(quic_time_wait_list_support_multiple_cid);
+      GetQuicRestartFlag(quic_time_wait_list_support_multiple_cid_v2);
 };
 
 }  // namespace quic
diff --git a/quic/core/quic_time_wait_list_manager_test.cc b/quic/core/quic_time_wait_list_manager_test.cc
index 5ece763..189d3f0 100644
--- a/quic/core/quic_time_wait_list_manager_test.cc
+++ b/quic/core/quic_time_wait_list_manager_test.cc
@@ -447,13 +447,14 @@
 
 TEST_F(QuicTimeWaitListManagerTest,
        CleanUpOldConnectionIdsForMultipleConnectionIdsPerConnection) {
-  if (!GetQuicRestartFlag(quic_time_wait_list_support_multiple_cid)) {
+  if (!GetQuicRestartFlag(quic_time_wait_list_support_multiple_cid_v2)) {
     return;
   }
 
   connection_id_ = TestConnectionId(7);
   const size_t kConnectionCloseLength = 100;
   EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
+  EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(TestConnectionId(8)));
   std::vector<std::unique_ptr<QuicEncryptedPacket>> termination_packets;
   termination_packets.push_back(
       std::unique_ptr<QuicEncryptedPacket>(new QuicEncryptedPacket(
@@ -711,13 +712,14 @@
 
 TEST_F(QuicTimeWaitListManagerTest,
        SendConnectionClosePacketsForMultipleConnectionIds) {
-  if (!GetQuicRestartFlag(quic_time_wait_list_support_multiple_cid)) {
+  if (!GetQuicRestartFlag(quic_time_wait_list_support_multiple_cid_v2)) {
     return;
   }
 
   connection_id_ = TestConnectionId(7);
   const size_t kConnectionCloseLength = 100;
   EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
+  EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(TestConnectionId(8)));
   std::vector<std::unique_ptr<QuicEncryptedPacket>> termination_packets;
   termination_packets.push_back(
       std::unique_ptr<QuicEncryptedPacket>(new QuicEncryptedPacket(
