gfe-relnote: In QUIC, populate nonretransmittable_frames in SerializedPacket. Protected by gfe2_reloadable_flag_quic_populate_nonretransmittable_frames.

PiperOrigin-RevId: 275833395
Change-Id: I96d8663e89354a777cabb9e636eede9e61002d26
diff --git a/quic/core/quic_packets.cc b/quic/core/quic_packets.cc
index dfe80cf..216a37b 100644
--- a/quic/core/quic_packets.cc
+++ b/quic/core/quic_packets.cc
@@ -477,6 +477,7 @@
       original_packet_number(other.original_packet_number),
       largest_acked(other.largest_acked) {
   retransmittable_frames.swap(other.retransmittable_frames);
+  nonretransmittable_frames.swap(other.nonretransmittable_frames);
 }
 
 SerializedPacket::~SerializedPacket() {}
@@ -485,6 +486,14 @@
   if (!serialized_packet->retransmittable_frames.empty()) {
     DeleteFrames(&serialized_packet->retransmittable_frames);
   }
+  for (auto& frame : serialized_packet->nonretransmittable_frames) {
+    if (frame.type == ACK_FRAME) {
+      // Ack frame is owned by received_packet_manager.
+      continue;
+    }
+    DeleteFrame(&frame);
+  }
+  serialized_packet->nonretransmittable_frames.clear();
   serialized_packet->encrypted_buffer = nullptr;
   serialized_packet->encrypted_length = 0;
   serialized_packet->largest_acked.Clear();