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_packet_creator.cc b/quic/core/quic_packet_creator.cc
index ee2dc02..f2e9789 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -94,11 +94,16 @@
flusher_attached_(false),
fully_pad_crypto_handshake_packets_(true),
combine_generator_and_creator_(
- GetQuicReloadableFlag(quic_combine_generator_and_creator)) {
+ GetQuicReloadableFlag(quic_combine_generator_and_creator)),
+ populate_nonretransmittable_frames_(
+ GetQuicReloadableFlag(quic_populate_nonretransmittable_frames)) {
SetMaxPacketLength(kDefaultMaxPacketSize);
if (combine_generator_and_creator_) {
QUIC_RELOADABLE_FLAG_COUNT(quic_combine_generator_and_creator);
}
+ if (populate_nonretransmittable_frames_) {
+ QUIC_RELOADABLE_FLAG_COUNT(quic_populate_nonretransmittable_frames);
+ }
}
QuicPacketCreator::~QuicPacketCreator() {
@@ -445,6 +450,7 @@
packet_.encrypted_buffer = nullptr;
packet_.encrypted_length = 0;
DCHECK(packet_.retransmittable_frames.empty());
+ DCHECK(packet_.nonretransmittable_frames.empty());
packet_.largest_acked.Clear();
needs_full_padding_ = false;
}
@@ -1399,6 +1405,10 @@
packet_.has_crypto_handshake = IS_HANDSHAKE;
}
} else {
+ if (populate_nonretransmittable_frames_ &&
+ !QuicUtils::IsRetransmittableFrame(frame.type)) {
+ packet_.nonretransmittable_frames.push_back(frame);
+ }
queued_frames_.push_back(frame);
}