Fix QUIC_BUG in FlushAckFrame to check whether frames is empty.
Protected by FLAGS_quic_reloadable_flag_quic_single_ack_in_packet2.
PiperOrigin-RevId: 349583801
Change-Id: I75958100168a1c77c8661d217224f6584fac284c
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index 0ebfc30..7dbe37a 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -1423,7 +1423,10 @@
bool QuicPacketCreator::FlushAckFrame(const QuicFrames& frames) {
QUIC_BUG_IF(!flusher_attached_) << "Packet flusher is not attached when "
"generator tries to send ACK frame.";
- QUIC_BUG_IF(GetQuicReloadableFlag(quic_single_ack_in_packet) && has_ack())
+ // MaybeBundleAckOpportunistically could be called nestedly when sending a
+ // control frame causing another control frame to be sent.
+ QUIC_BUG_IF(GetQuicReloadableFlag(quic_single_ack_in_packet2) &&
+ !frames.empty() && has_ack())
<< "Trying to flush " << frames << " when there is ACK queued";
for (const auto& frame : frames) {
DCHECK(frame.type == ACK_FRAME || frame.type == STOP_WAITING_FRAME);