Add some QUIC DCHECKs
These assumptions were found when trying to debug crbug/1117201
Debug-only change
PiperOrigin-RevId: 328638627
Change-Id: Ic563044d9e5d7be8965a62b126215c066d0b400f
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index fb574fc..bfced90 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -1619,6 +1619,13 @@
}
}
+ // If this is an ACK frame, validate that it is non-empty and that
+ // largest_acked matches the max packet number.
+ DCHECK(frame.type != ACK_FRAME ||
+ (!frame.ack_frame->packets.Empty() &&
+ frame.ack_frame->packets.Max() == frame.ack_frame->largest_acked))
+ << "Invalid ACK frame: " << frame;
+
size_t frame_len = GetSerializedFrameLength(frame);
if (frame_len == 0 && RemoveSoftMaxPacketLength()) {
// Remove soft max_packet_length and retry.
@@ -1977,5 +1984,13 @@
creator_->SetDefaultPeerAddress(old_peer_address_);
}
+void QuicPacketCreator::set_encryption_level(EncryptionLevel level) {
+ DCHECK(level == packet_.encryption_level || !HasPendingFrames())
+ << "Cannot update encryption level from " << packet_.encryption_level
+ << " to " << level << " when we already have pending frames: "
+ << QuicFramesToString(queued_frames_);
+ packet_.encryption_level = level;
+}
+
#undef ENDPOINT // undef for jumbo builds
} // namespace quic