Refactor ConsumeCryptoData This is a trivial no-op refactor that will facilitate subsequent changes to enable Chaos Protection v2. PiperOrigin-RevId: 699279490
diff --git a/quiche/quic/core/quic_packet_creator.cc b/quiche/quic/core/quic_packet_creator.cc index e15c811..5e5aa9c 100644 --- a/quiche/quic/core/quic_packet_creator.cc +++ b/quiche/quic/core/quic_packet_creator.cc
@@ -1537,27 +1537,9 @@ fin && (total_bytes_consumed == write_length)); } -size_t QuicPacketCreator::ConsumeCryptoData(EncryptionLevel level, - size_t write_length, - QuicStreamOffset offset) { - QUIC_DVLOG(2) << ENDPOINT << "ConsumeCryptoData " << level << " write_length " - << write_length << " offset " << offset; - QUIC_BUG_IF(quic_bug_10752_25, !flusher_attached_) - << ENDPOINT - << "Packet flusher is not attached when " - "generator tries to write crypto data."; - MaybeBundleOpportunistically(); - // To make reasoning about crypto frames easier, we don't combine them with - // other retransmittable frames in a single packet. - // TODO(nharper): Once we have separate packet number spaces, everything - // should be driven by encryption level, and we should stop flushing in this - // spot. - if (HasPendingRetransmittableFrames()) { - FlushCurrentPacket(); - } - - size_t total_bytes_consumed = 0; - +size_t QuicPacketCreator::GenerateRemainingCryptoFrames( + EncryptionLevel level, size_t write_length, QuicStreamOffset offset, + size_t total_bytes_consumed) { while ( total_bytes_consumed < write_length && delegate_->ShouldGeneratePacket(HAS_RETRANSMITTABLE_DATA, IS_HANDSHAKE)) { @@ -1581,6 +1563,30 @@ total_bytes_consumed += frame.crypto_frame->data_length; FlushCurrentPacket(); } + return total_bytes_consumed; +} + +size_t QuicPacketCreator::ConsumeCryptoData(EncryptionLevel level, + size_t write_length, + QuicStreamOffset offset) { + QUIC_DVLOG(2) << ENDPOINT << "ConsumeCryptoData " << level << " write_length " + << write_length << " offset " << offset; + QUIC_BUG_IF(quic_bug_10752_25, !flusher_attached_) + << ENDPOINT + << "Packet flusher is not attached when " + "generator tries to write crypto data."; + MaybeBundleOpportunistically(); + // To make reasoning about crypto frames easier, we don't combine them with + // other retransmittable frames in a single packet. + // TODO(nharper): Once we have separate packet number spaces, everything + // should be driven by encryption level, and we should stop flushing in this + // spot. + if (HasPendingRetransmittableFrames()) { + FlushCurrentPacket(); + } + + size_t total_bytes_consumed = GenerateRemainingCryptoFrames( + level, write_length, offset, /*total_bytes_consumed=*/0); // Don't allow the handshake to be bundled with other retransmittable frames. FlushCurrentPacket();
diff --git a/quiche/quic/core/quic_packet_creator.h b/quiche/quic/core/quic_packet_creator.h index c4ac34f..0d0a060 100644 --- a/quiche/quic/core/quic_packet_creator.h +++ b/quiche/quic/core/quic_packet_creator.h
@@ -640,6 +640,12 @@ // after. void MaybeBundleOpportunistically(); + // Generates crypto frames from any remaining available crypto data. + size_t GenerateRemainingCryptoFrames(EncryptionLevel level, + size_t write_length, + QuicStreamOffset offset, + size_t total_bytes_consumed); + // Does not own these delegates or the framer. DelegateInterface* delegate_; DebugDelegate* debug_delegate_;