diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 4f089a4..5f20559 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -1700,7 +1700,8 @@
     QUIC_BUG << "Attempt to send empty crypto frame";
     return 0;
   }
-  if (!ShouldGeneratePacket(HAS_RETRANSMITTABLE_DATA, IS_HANDSHAKE)) {
+  if (!GetQuicReloadableFlag(quic_fix_checking_should_generate_packet) &&
+      !ShouldGeneratePacket(HAS_RETRANSMITTABLE_DATA, IS_HANDSHAKE)) {
     return 0;
   }
   ScopedPacketFlusher flusher(this);
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index d5555fc..4db87e2 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -1287,7 +1287,13 @@
 
   size_t total_bytes_consumed = 0;
 
-  while (total_bytes_consumed < write_length) {
+  while (total_bytes_consumed < write_length &&
+         (!GetQuicReloadableFlag(quic_fix_checking_should_generate_packet) ||
+          delegate_->ShouldGeneratePacket(HAS_RETRANSMITTABLE_DATA,
+                                          IS_HANDSHAKE))) {
+    if (GetQuicReloadableFlag(quic_fix_checking_should_generate_packet)) {
+      QUIC_RELOADABLE_FLAG_COUNT(quic_fix_checking_should_generate_packet);
+    }
     QuicFrame frame;
     if (!ConsumeCryptoDataToFillCurrentPacket(
             level, write_length - total_bytes_consumed,
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc
index d1beea7..19267c9 100644
--- a/quic/core/quic_packet_creator_test.cc
+++ b/quic/core/quic_packet_creator_test.cc
@@ -2679,6 +2679,37 @@
   CheckPacketContains(contents, 0);
 }
 
+TEST_F(QuicPacketCreatorMultiplePacketsTest,
+       ConsumeCryptoDataCheckShouldGeneratePacket) {
+  delegate_.SetCanNotWrite();
+
+  if (GetQuicReloadableFlag(quic_fix_checking_should_generate_packet)) {
+    EXPECT_CALL(delegate_, OnSerializedPacket(_)).Times(0);
+  } else {
+    EXPECT_CALL(delegate_, OnSerializedPacket(_))
+        .WillOnce(
+            Invoke(this, &QuicPacketCreatorMultiplePacketsTest::SavePacket));
+  }
+  std::string data = "crypto data";
+  size_t consumed_bytes =
+      creator_.ConsumeCryptoData(ENCRYPTION_INITIAL, data, 0);
+  creator_.Flush();
+  if (GetQuicReloadableFlag(quic_fix_checking_should_generate_packet)) {
+    EXPECT_EQ(0u, consumed_bytes);
+  } else {
+    EXPECT_EQ(data.length(), consumed_bytes);
+  }
+  EXPECT_FALSE(creator_.HasPendingFrames());
+  EXPECT_FALSE(creator_.HasPendingRetransmittableFrames());
+  if (GetQuicReloadableFlag(quic_fix_checking_should_generate_packet)) {
+    return;
+  }
+  PacketContents contents;
+  contents.num_crypto_frames = 1;
+  contents.num_padding_frames = 1;
+  CheckPacketContains(contents, 0);
+}
+
 TEST_F(QuicPacketCreatorMultiplePacketsTest, ConsumeData_NotWritable) {
   delegate_.SetCanNotWrite();
 
