gfe-relnote: Deprecate gfe2_reloadable_flag_quic_deprecate_queued_control_frames. Remove queued_control_frames_ from QuicPacketGenerator. PiperOrigin-RevId: 257595927 Change-Id: I1081154891b70d1235a6cc08e77bbb00fd8b4c72
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index 38656b3..7f3f01e 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -708,7 +708,7 @@ GetServerConnectionIdAsRecipient(header, perspective_)) || PacketCanReplaceConnectionId(header, perspective_)); - if (!packet_generator_.IsPendingPacketEmpty()) { + if (packet_generator_.HasPendingFrames()) { // Incoming packets may change a queued ACK frame. const std::string error_details = "Pending frames must be serialized before incoming packets are " @@ -1517,16 +1517,10 @@ } bool QuicConnection::SendControlFrame(const QuicFrame& frame) { - if (!packet_generator_.deprecate_queued_control_frames() && - !CanWrite(HAS_RETRANSMITTABLE_DATA) && frame.type != PING_FRAME) { - QUIC_DVLOG(1) << ENDPOINT << "Failed to send control frame: " << frame; - // Do not check congestion window for ping. - return false; - } ScopedPacketFlusher flusher(this); const bool consumed = packet_generator_.ConsumeRetransmittableControlFrame(frame); - if (packet_generator_.deprecate_queued_control_frames() && !consumed) { + if (!consumed) { QUIC_DVLOG(1) << ENDPOINT << "Failed to send control frame: " << frame; return false; } @@ -1921,7 +1915,7 @@ ScopedPacketFlusher flusher(this); packet_generator_.FlushAllQueuedFrames(); } - DCHECK(!packet_generator_.HasQueuedFrames()); + DCHECK(!packet_generator_.HasPendingFrames()); char buffer[kMaxOutgoingPacketSize]; packet_generator_.ReserializeAllFrames(pending, buffer, kMaxOutgoingPacketSize); @@ -2474,7 +2468,7 @@ } void QuicConnection::SetDefaultEncryptionLevel(EncryptionLevel level) { - if (level != encryption_level_ && packet_generator_.HasQueuedFrames()) { + if (level != encryption_level_ && packet_generator_.HasPendingFrames()) { // Flush all queued frames when encryption level changes. ScopedPacketFlusher flusher(this); packet_generator_.FlushAllQueuedFrames(); @@ -2715,7 +2709,7 @@ bool QuicConnection::HasQueuedData() const { return pending_version_negotiation_packet_ || !queued_packets_.empty() || - packet_generator_.HasQueuedFrames(); + packet_generator_.HasPendingFrames(); } bool QuicConnection::CanWriteStreamData() {
diff --git a/quic/core/quic_packet_generator.cc b/quic/core/quic_packet_generator.cc index 210e24d..fe17069 100644 --- a/quic/core/quic_packet_generator.cc +++ b/quic/core/quic_packet_generator.cc
@@ -27,13 +27,9 @@ next_transmission_type_(NOT_RETRANSMISSION), flusher_attached_(false), random_generator_(random_generator), - fully_pad_crypto_handshake_packets_(true), - deprecate_queued_control_frames_( - GetQuicReloadableFlag(quic_deprecate_queued_control_frames)) {} + fully_pad_crypto_handshake_packets_(true) {} -QuicPacketGenerator::~QuicPacketGenerator() { - DeleteFrames(&queued_control_frames_); -} +QuicPacketGenerator::~QuicPacketGenerator() {} bool QuicPacketGenerator::ConsumeRetransmittableControlFrame( const QuicFrame& frame) { @@ -41,29 +37,23 @@ << "Adding a control frame with no control frame id: " << frame; DCHECK(QuicUtils::IsRetransmittableFrame(frame.type)) << frame; MaybeBundleAckOpportunistically(); - if (deprecate_queued_control_frames_) { - QUIC_RELOADABLE_FLAG_COUNT(quic_deprecate_queued_control_frames); - if (packet_creator_.HasPendingFrames()) { - if (packet_creator_.AddSavedFrame(frame, next_transmission_type_)) { - // There is pending frames and current frame fits. - return true; - } + if (packet_creator_.HasPendingFrames()) { + if (packet_creator_.AddSavedFrame(frame, next_transmission_type_)) { + // There is pending frames and current frame fits. + return true; } - DCHECK(!packet_creator_.HasPendingFrames()); - if (frame.type != PING_FRAME && frame.type != CONNECTION_CLOSE_FRAME && - !delegate_->ShouldGeneratePacket(HAS_RETRANSMITTABLE_DATA, - NOT_HANDSHAKE)) { - // Do not check congestion window for ping or connection close frames. - return false; - } - const bool success = - packet_creator_.AddSavedFrame(frame, next_transmission_type_); - DCHECK(success); - return success; } - queued_control_frames_.push_back(frame); - SendQueuedFrames(/*flush=*/false); - return true; + DCHECK(!packet_creator_.HasPendingFrames()); + if (frame.type != PING_FRAME && frame.type != CONNECTION_CLOSE_FRAME && + !delegate_->ShouldGeneratePacket(HAS_RETRANSMITTABLE_DATA, + NOT_HANDSHAKE)) { + // Do not check congestion window for ping or connection close frames. + return false; + } + const bool success = + packet_creator_.AddSavedFrame(frame, next_transmission_type_); + DCHECK(success); + return success; } size_t QuicPacketGenerator::ConsumeCryptoData(EncryptionLevel level, @@ -77,8 +67,9 @@ // TODO(nharper): Once we have separate packet number spaces, everything // should be driven by encryption level, and we should stop flushing in this // spot. - const bool flush = packet_creator_.HasPendingRetransmittableFrames(); - SendQueuedFrames(flush); + if (packet_creator_.HasPendingRetransmittableFrames()) { + packet_creator_.Flush(); + } size_t total_bytes_consumed = 0; @@ -101,7 +92,7 @@ } // Don't allow the handshake to be bundled with other retransmittable frames. - SendQueuedFrames(/*flush=*/true); + packet_creator_.Flush(); return total_bytes_consumed; } @@ -120,9 +111,9 @@ << "Handshake packets should never send a fin"; // To make reasoning about crypto frames easier, we don't combine them with // other retransmittable frames in a single packet. - const bool flush = - has_handshake && packet_creator_.HasPendingRetransmittableFrames(); - SendQueuedFrames(flush); + if (has_handshake && packet_creator_.HasPendingRetransmittableFrames()) { + packet_creator_.Flush(); + } size_t total_bytes_consumed = 0; bool fin_consumed = false; @@ -138,7 +129,7 @@ // We determine if we can enter the fast path before executing // the slow path loop. bool run_fast_path = - !has_handshake && state != FIN_AND_PADDING && !HasQueuedFrames() && + !has_handshake && state != FIN_AND_PADDING && !HasPendingFrames() && write_length - total_bytes_consumed > kMaxOutgoingPacketSize; while (!run_fast_path && delegate_->ShouldGeneratePacket( @@ -178,7 +169,7 @@ packet_creator_.Flush(); run_fast_path = - !has_handshake && state != FIN_AND_PADDING && !HasQueuedFrames() && + !has_handshake && state != FIN_AND_PADDING && !HasPendingFrames() && write_length - total_bytes_consumed > kMaxOutgoingPacketSize; } @@ -189,7 +180,7 @@ // Don't allow the handshake to be bundled with other retransmittable frames. if (has_handshake) { - SendQueuedFrames(/*flush=*/true); + packet_creator_.Flush(); } return QuicConsumedData(total_bytes_consumed, fin_consumed); @@ -245,40 +236,6 @@ SetMaxPacketLength(current_mtu); } -bool QuicPacketGenerator::CanSendWithNextPendingFrameAddition() const { - DCHECK(HasPendingFrames() || packet_creator_.pending_padding_bytes() > 0); - HasRetransmittableData retransmittable = - packet_creator_.pending_padding_bytes() > 0 ? NO_RETRANSMITTABLE_DATA - : HAS_RETRANSMITTABLE_DATA; - if (retransmittable == HAS_RETRANSMITTABLE_DATA) { - DCHECK(!queued_control_frames_.empty()); // These are retransmittable. - } - return delegate_->ShouldGeneratePacket(retransmittable, NOT_HANDSHAKE); -} - -void QuicPacketGenerator::SendQueuedFrames(bool flush) { - // Only add pending frames if we are SURE we can then send the whole packet. - while (HasPendingFrames() && - (flush || CanSendWithNextPendingFrameAddition())) { - bool first_frame = packet_creator_.CanSetMaxPacketLength(); - if (!AddNextPendingFrame() && first_frame) { - // A single frame cannot fit into the packet, tear down the connection. - QUIC_BUG << "A single frame cannot fit into packet." - << " number of queued_control_frames: " - << queued_control_frames_.size(); - if (!queued_control_frames_.empty()) { - QUIC_LOG(INFO) << queued_control_frames_[0]; - } - delegate_->OnUnrecoverableError(QUIC_FAILED_TO_SERIALIZE_PACKET, - "Single frame cannot fit into a packet"); - return; - } - } - if (flush) { - packet_creator_.Flush(); - } -} - bool QuicPacketGenerator::PacketFlusherAttached() const { return flusher_attached_; } @@ -291,7 +248,6 @@ } void QuicPacketGenerator::Flush() { - SendQueuedFrames(/*flush=*/false); packet_creator_.Flush(); SendRemainingPendingPadding(); flusher_attached_ = false; @@ -309,34 +265,11 @@ } void QuicPacketGenerator::FlushAllQueuedFrames() { - SendQueuedFrames(/*flush=*/true); -} - -bool QuicPacketGenerator::HasQueuedFrames() const { - return packet_creator_.HasPendingFrames() || HasPendingFrames(); -} - -bool QuicPacketGenerator::IsPendingPacketEmpty() const { - return !packet_creator_.HasPendingFrames(); + packet_creator_.Flush(); } bool QuicPacketGenerator::HasPendingFrames() const { - return !queued_control_frames_.empty(); -} - -bool QuicPacketGenerator::AddNextPendingFrame() { - QUIC_BUG_IF(!flusher_attached_) << "Packet flusher is not attached when " - "generator tries to write control frames."; - QUIC_BUG_IF(queued_control_frames_.empty()) - << "AddNextPendingFrame called with no queued control frames."; - - if (!packet_creator_.AddSavedFrame(queued_control_frames_.back(), - next_transmission_type_)) { - // Packet was full. - return false; - } - queued_control_frames_.pop_back(); - return true; + return packet_creator_.HasPendingFrames(); } void QuicPacketGenerator::StopSendingVersion() { @@ -427,15 +360,15 @@ } void QuicPacketGenerator::SendRemainingPendingPadding() { - while (packet_creator_.pending_padding_bytes() > 0 && !HasQueuedFrames() && - CanSendWithNextPendingFrameAddition()) { + while ( + packet_creator_.pending_padding_bytes() > 0 && !HasPendingFrames() && + delegate_->ShouldGeneratePacket(NO_RETRANSMITTABLE_DATA, NOT_HANDSHAKE)) { packet_creator_.Flush(); } } bool QuicPacketGenerator::HasRetransmittableFrames() const { - return !queued_control_frames_.empty() || - packet_creator_.HasPendingRetransmittableFrames(); + return packet_creator_.HasPendingRetransmittableFrames(); } bool QuicPacketGenerator::HasPendingStreamFramesOfStream( @@ -468,7 +401,6 @@ if (message_length > GetCurrentLargestMessagePayload()) { return MESSAGE_STATUS_TOO_LARGE; } - SendQueuedFrames(/*flush=*/false); if (!packet_creator_.HasRoomForMessageFrame(message_length)) { packet_creator_.Flush(); }
diff --git a/quic/core/quic_packet_generator.h b/quic/core/quic_packet_generator.h index 2f82654..ea7da5d 100644 --- a/quic/core/quic_packet_generator.h +++ b/quic/core/quic_packet_generator.h
@@ -3,7 +3,7 @@ // found in the LICENSE file. // Responsible for generating packets on behalf of a QuicConnection. -// Packets are serialized just-in-time. Control frames are queued. +// Packets are serialized just-in-time. // Ack and Feedback frames will be requested from the Connection // just-in-time. When a packet needs to be sent, the Generator // will serialize a packet and pass it to QuicConnection::SendOrQueuePacket() @@ -121,16 +121,14 @@ bool PacketFlusherAttached() const; // Attaches packet flusher. void AttachPacketFlusher(); - // Flushes everything, including all queued frames and pending padding. + // Flushes everything, including current open packet and pending padding. void Flush(); - // Flushes all queued frames, even frames which are not sendable. + // Flushes current open packet. void FlushAllQueuedFrames(); - bool HasQueuedFrames() const; - - // Whether the pending packet has no frames in it at the moment. - bool IsPendingPacketEmpty() const; + // Returns true if there are frames pending to be serialized. + bool HasPendingFrames() const; // Makes the framer not serialize the protocol version in sent packets. void StopSendingVersion(); @@ -241,26 +239,9 @@ return fully_pad_crypto_handshake_packets_; } - bool deprecate_queued_control_frames() const { - return deprecate_queued_control_frames_; - } - private: friend class test::QuicPacketGeneratorPeer; - void SendQueuedFrames(bool flush); - - // Test to see if we have pending ack, or control frames. - bool HasPendingFrames() const; - // Returns true if addition of a pending frame (which might be - // retransmittable) would still allow the resulting packet to be sent now. - bool CanSendWithNextPendingFrameAddition() const; - // Add exactly one pending frame, preferring ack frames over control frames. - // Returns true if a pending frame is successfully added. - // Returns false and flushes current open packet if the pending frame cannot - // fit into current open packet. - bool AddNextPendingFrame(); - // Adds a random amount of padding (between 1 to 256 bytes). void AddRandomPadding(); @@ -275,9 +256,6 @@ DelegateInterface* delegate_; QuicPacketCreator packet_creator_; - // TODO(fayang): remove this when deprecating - // quic_deprecate_queued_control_frames. - QuicFrames queued_control_frames_; // Transmission type of the next serialized packet. TransmissionType next_transmission_type_; @@ -294,9 +272,6 @@ // when the out-most flusher attaches and gets cleared when the out-most // flusher detaches. QuicPacketNumber write_start_packet_number_; - - // Latched value of quic_deprecate_queued_control_frames. - const bool deprecate_queued_control_frames_; }; } // namespace quic
diff --git a/quic/core/quic_packet_generator_test.cc b/quic/core/quic_packet_generator_test.cc index e996c4e..cdb19b3 100644 --- a/quic/core/quic_packet_generator_test.cc +++ b/quic/core/quic_packet_generator_test.cc
@@ -346,15 +346,10 @@ const bool consumed = generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), /*bundle_ack=*/false); - if (generator_.deprecate_queued_control_frames()) { - EXPECT_FALSE(consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); - EXPECT_FALSE(generator_.HasRetransmittableFrames()); - delete rst_frame; - } else { - EXPECT_TRUE(generator_.HasQueuedFrames()); - EXPECT_TRUE(generator_.HasRetransmittableFrames()); - } + EXPECT_FALSE(consumed); + EXPECT_FALSE(generator_.HasPendingFrames()); + EXPECT_FALSE(generator_.HasRetransmittableFrames()); + delete rst_frame; } TEST_F(QuicPacketGeneratorTest, AddControlFrame_OnlyAckWritable) { @@ -364,15 +359,10 @@ const bool consumed = generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), /*bundle_ack=*/false); - if (generator_.deprecate_queued_control_frames()) { - EXPECT_FALSE(consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); - EXPECT_FALSE(generator_.HasRetransmittableFrames()); - delete rst_frame; - } else { - EXPECT_TRUE(generator_.HasQueuedFrames()); - EXPECT_TRUE(generator_.HasRetransmittableFrames()); - } + EXPECT_FALSE(consumed); + EXPECT_FALSE(generator_.HasPendingFrames()); + EXPECT_FALSE(generator_.HasRetransmittableFrames()); + delete rst_frame; } TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldNotFlush) { @@ -381,7 +371,7 @@ generator_.ConsumeRetransmittableControlFrame( QuicFrame(CreateRstStreamFrame()), /*bundle_ack=*/false); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); } @@ -392,29 +382,10 @@ const bool consumed = generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), /*bundle_ack=*/false); - if (generator_.deprecate_queued_control_frames()) { - EXPECT_FALSE(consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); - EXPECT_FALSE(generator_.HasRetransmittableFrames()); - delete rst_frame; - return; - } - EXPECT_TRUE(generator_.HasQueuedFrames()); - EXPECT_TRUE(generator_.HasRetransmittableFrames()); - generator_.Flush(); - EXPECT_TRUE(generator_.HasQueuedFrames()); - EXPECT_TRUE(generator_.HasRetransmittableFrames()); - - EXPECT_CALL(delegate_, OnSerializedPacket(_)) - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); - generator_.AttachPacketFlusher(); - generator_.FlushAllQueuedFrames(); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(consumed); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); - - PacketContents contents; - contents.num_rst_stream_frames = 1; - CheckPacketContains(contents, 0); + delete rst_frame; } TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldFlush) { @@ -427,7 +398,7 @@ QuicFrame(CreateRstStreamFrame()), /*bundle_ack=*/false); generator_.Flush(); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); PacketContents contents; @@ -445,7 +416,7 @@ generator_.ConsumeCryptoData(ENCRYPTION_INITIAL, data, 0); generator_.Flush(); EXPECT_EQ(data.length(), consumed_bytes); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); PacketContents contents; @@ -463,7 +434,7 @@ iov_.iov_len, 0, FIN); EXPECT_EQ(0u, consumed.bytes_consumed); EXPECT_FALSE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); } @@ -476,7 +447,7 @@ iov_.iov_len, 0, FIN); EXPECT_EQ(3u, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); } @@ -492,7 +463,7 @@ generator_.Flush(); EXPECT_EQ(3u, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); PacketContents contents; @@ -522,7 +493,7 @@ .bytes_consumed; } EXPECT_EQ(7u, consumed_bytes); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); PacketContents contents; @@ -562,7 +533,7 @@ .bytes_consumed; } EXPECT_EQ(3u, bytes_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); PacketContents contents; @@ -612,7 +583,7 @@ generator_.ConsumeData(3, &iov_, 1u, iov_.iov_len, 3, NO_FIN); EXPECT_EQ(4u, consumed.bytes_consumed); EXPECT_FALSE(consumed.fin_consumed); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); } @@ -629,14 +600,14 @@ iov_.iov_len, 3, NO_FIN); EXPECT_EQ(4u, consumed.bytes_consumed); EXPECT_FALSE(consumed.fin_consumed); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); // Now both frames will be flushed out. EXPECT_CALL(delegate_, OnSerializedPacket(_)) .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); generator_.Flush(); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); PacketContents contents; @@ -683,7 +654,7 @@ iov_.iov_len, 0, NO_FIN); EXPECT_EQ(3u, consumed.bytes_consumed); EXPECT_FALSE(consumed.fin_consumed); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); // This frame will not fit with the existing frame, causing the queued frame @@ -694,11 +665,11 @@ iov_.iov_len, 3, FIN); EXPECT_EQ(3u, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); creator_->Flush(); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); PacketContents contents; @@ -721,7 +692,7 @@ iov_.iov_len, 0, true); EXPECT_EQ(10000u, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); PacketContents contents; @@ -749,7 +720,7 @@ iov_.iov_len, 0, FIN); EXPECT_EQ(10000u, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); PacketContents contents; @@ -771,31 +742,22 @@ const bool success = generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), /*bundle_ack=*/true); - if (generator_.deprecate_queued_control_frames()) { - EXPECT_FALSE(success); - EXPECT_FALSE(generator_.HasQueuedFrames()); - EXPECT_FALSE(generator_.HasRetransmittableFrames()); - } else { - EXPECT_TRUE(generator_.HasQueuedFrames()); - EXPECT_TRUE(generator_.HasRetransmittableFrames()); - } + EXPECT_FALSE(success); + EXPECT_FALSE(generator_.HasPendingFrames()); + EXPECT_FALSE(generator_.HasRetransmittableFrames()); delegate_.SetCanWriteAnything(); - if (generator_.deprecate_queued_control_frames()) { - generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), - /*bundle_ack=*/false); - } + generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), + /*bundle_ack=*/false); // Create a 10000 byte IOVector. CreateData(10000); EXPECT_CALL(delegate_, OnSerializedPacket(_)) .WillRepeatedly(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); - if (generator_.deprecate_queued_control_frames()) { - generator_.ConsumeRetransmittableControlFrame( - QuicFrame(CreateRstStreamFrame()), - /*bundle_ack=*/true); - } + generator_.ConsumeRetransmittableControlFrame( + QuicFrame(CreateRstStreamFrame()), + /*bundle_ack=*/true); QuicConsumedData consumed = generator_.ConsumeData( QuicUtils::GetHeadersStreamId(framer_.transport_version()), &iov_, 1u, iov_.iov_len, 0, FIN); @@ -803,7 +765,7 @@ EXPECT_EQ(10000u, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); EXPECT_FALSE(packets_.empty()); @@ -833,7 +795,7 @@ EXPECT_EQ(10000u, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); EXPECT_FALSE(packets_.empty()); @@ -852,23 +814,16 @@ const bool consumed = generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), /*bundle_ack=*/true); - if (generator_.deprecate_queued_control_frames()) { - EXPECT_FALSE(consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); - EXPECT_FALSE(generator_.HasRetransmittableFrames()); - } else { - EXPECT_TRUE(generator_.HasQueuedFrames()); - EXPECT_TRUE(generator_.HasRetransmittableFrames()); - } + EXPECT_FALSE(consumed); + EXPECT_FALSE(generator_.HasPendingFrames()); + EXPECT_FALSE(generator_.HasRetransmittableFrames()); EXPECT_FALSE(generator_.HasPendingStreamFramesOfStream(3)); delegate_.SetCanWriteAnything(); - if (generator_.deprecate_queued_control_frames()) { - EXPECT_TRUE( - generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), - /*bundle_ack=*/false)); - } + EXPECT_TRUE( + generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), + /*bundle_ack=*/false)); // Send some data and a control frame MakeIOVector("quux", &iov_); generator_.ConsumeData(3, &iov_, 1u, iov_.iov_len, 0, NO_FIN); @@ -883,7 +838,7 @@ EXPECT_CALL(delegate_, OnSerializedPacket(_)) .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); generator_.Flush(); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); EXPECT_FALSE(generator_.HasPendingStreamFramesOfStream(3)); @@ -907,14 +862,9 @@ const bool success = generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), /*bundle_ack=*/true); - if (generator_.deprecate_queued_control_frames()) { - EXPECT_FALSE(success); - EXPECT_FALSE(generator_.HasQueuedFrames()); - EXPECT_FALSE(generator_.HasRetransmittableFrames()); - } else { - EXPECT_TRUE(generator_.HasQueuedFrames()); - EXPECT_TRUE(generator_.HasRetransmittableFrames()); - } + EXPECT_FALSE(success); + EXPECT_FALSE(generator_.HasPendingFrames()); + EXPECT_FALSE(generator_.HasRetransmittableFrames()); delegate_.SetCanWriteAnything(); @@ -926,11 +876,9 @@ EXPECT_CALL(delegate_, OnSerializedPacket(_)) .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); } - if (generator_.deprecate_queued_control_frames()) { - EXPECT_TRUE( - generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), - /*bundle_ack=*/false)); - } + EXPECT_TRUE( + generator_.ConsumeRetransmittableControlFrame(QuicFrame(rst_frame), + /*bundle_ack=*/false)); // Send enough data to exceed one packet size_t data_len = kDefaultMaxPacketSize + 100; CreateData(data_len); @@ -945,7 +893,7 @@ } generator_.Flush(); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); // The first packet should have the queued data and part of the stream data. @@ -1050,7 +998,7 @@ /*offset=*/0, FIN); EXPECT_EQ(data_len, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); // We expect three packets, and first two of them have to be of packet_len @@ -1088,7 +1036,7 @@ generator_.Flush(); EXPECT_EQ(data_len, consumed.bytes_consumed); EXPECT_FALSE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); // Make sure we already have two packets. @@ -1107,7 +1055,7 @@ generator_.Flush(); EXPECT_EQ(data_len, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); // We expect first data chunk to get fragmented, but the second one to fit @@ -1137,7 +1085,7 @@ /*offset=*/0, NO_FIN); EXPECT_EQ(first_write_len, consumed.bytes_consumed); EXPECT_FALSE(consumed.fin_consumed); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); // Make sure we have no packets so far. @@ -1152,7 +1100,7 @@ generator_.FlushAllQueuedFrames(); generator_.SetMaxPacketLength(packet_len); EXPECT_EQ(packet_len, generator_.GetCurrentMaxPacketLength()); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); // We expect to see exactly one packet serialized after that, because we send @@ -1170,7 +1118,7 @@ /*offset=*/first_write_len, FIN); EXPECT_EQ(second_write_len, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); // We expect the first packet to be underfilled, and the second packet be up @@ -1221,7 +1169,7 @@ generator_.GenerateMtuDiscoveryPacket(target_mtu); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); ASSERT_EQ(1u, packets_.size()); EXPECT_EQ(target_mtu, packets_[0].encrypted_length); @@ -1259,12 +1207,12 @@ generator_.Flush(); EXPECT_EQ(data_len, consumed.bytes_consumed); EXPECT_FALSE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); // Send the MTU probe. generator_.GenerateMtuDiscoveryPacket(target_mtu); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); // Send data after the MTU probe. @@ -1277,7 +1225,7 @@ generator_.Flush(); EXPECT_EQ(data_len, consumed.bytes_consumed); EXPECT_TRUE(consumed.fin_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); ASSERT_EQ(5u, packets_.size()); @@ -1329,7 +1277,7 @@ } generator_.ConsumeRetransmittableControlFrame(QuicFrame(frame), /*bundle_ack=*/false); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); } @@ -1364,7 +1312,7 @@ kDataStreamId, &iov_, 1u, iov_.iov_len, 0, FIN_AND_PADDING); generator_.Flush(); EXPECT_EQ(kStreamFramePayloadSize, consumed.bytes_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); EXPECT_EQ(1u, packets_.size()); @@ -1406,7 +1354,7 @@ kDataStreamId, &iov_, 1u, iov_.iov_len, 0, FIN_AND_PADDING); generator_.Flush(); EXPECT_EQ(kStreamFramePayloadSize, consumed.bytes_consumed); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); EXPECT_LE(1u, packets_.size()); @@ -1464,7 +1412,7 @@ FIN_AND_PADDING); EXPECT_EQ(kStreamFramePayloadSize, consumed.bytes_consumed); generator_.Flush(); - EXPECT_FALSE(generator_.HasQueuedFrames()); + EXPECT_FALSE(generator_.HasPendingFrames()); EXPECT_FALSE(generator_.HasRetransmittableFrames()); EXPECT_LE(2u, packets_.size()); @@ -1502,7 +1450,7 @@ EXPECT_EQ(MESSAGE_STATUS_SUCCESS, generator_.AddMessageFrame( 1, MakeSpan(&allocator_, "message", &storage))); - EXPECT_TRUE(generator_.HasQueuedFrames()); + EXPECT_TRUE(generator_.HasPendingFrames()); EXPECT_TRUE(generator_.HasRetransmittableFrames()); // Add a message which causes the flush of current packet.