In crypto_test_utils, move connection close frame between two test connections. This allows tests to check connection close errors on both ends.

PiperOrigin-RevId: 351845706
Change-Id: I1b3d22cc55a1aa2b728c3598555e633d9f30bb28
diff --git a/quic/test_tools/crypto_test_utils.cc b/quic/test_tools/crypto_test_utils.cc
index 17947f8..ce1c217 100644
--- a/quic/test_tools/crypto_test_utils.cc
+++ b/quic/test_tools/crypto_test_utils.cc
@@ -400,17 +400,21 @@
                                            PacketSavingConnection* server_conn,
                                            QuicCryptoStream* server,
                                            size_t server_i) {
-  QUIC_LOG(INFO) << "Processing "
-                 << client_conn->encrypted_packets_.size() - client_i
-                 << " packets client->server";
-  MovePackets(client_conn, &client_i, server, server_conn,
-              Perspective::IS_SERVER);
+  if (client_conn->encrypted_packets_.size() != client_i) {
+    QUIC_LOG(INFO) << "Processing "
+                   << client_conn->encrypted_packets_.size() - client_i
+                   << " packets client->server";
+    MovePackets(client_conn, &client_i, server, server_conn,
+                Perspective::IS_SERVER);
+  }
 
-  QUIC_LOG(INFO) << "Processing "
-                 << server_conn->encrypted_packets_.size() - server_i
-                 << " packets server->client";
-  MovePackets(server_conn, &server_i, client, client_conn,
-              Perspective::IS_CLIENT);
+  if (server_conn->encrypted_packets_.size() != server_i) {
+    QUIC_LOG(INFO) << "Processing "
+                   << server_conn->encrypted_packets_.size() - server_i
+                   << " packets server->client";
+    MovePackets(server_conn, &server_i, client, client_conn,
+                Perspective::IS_CLIENT);
+  }
 
   return std::make_pair(client_i, server_i);
 }
@@ -795,6 +799,9 @@
     for (const auto& crypto_frame : framer.crypto_frames()) {
       dest_stream->OnCryptoFrame(*crypto_frame);
     }
+    if (!framer.connection_close_frames().empty() && dest_conn->connected()) {
+      dest_conn->OnConnectionCloseFrame(framer.connection_close_frames()[0]);
+    }
   }
   *inout_packet_index = index;