diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index f5c7684..ec7248d 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -179,10 +179,14 @@
                                     bool needs_full_padding,
                                     TransmissionType transmission_type,
                                     QuicFrame* frame) {
-  if (!HasRoomForStreamFrame(id, offset, write_length - iov_offset)) {
+  // TODO(ianswett): Remove write_length once the multi-packet CHLO check is
+  // done higher in the stack.
+  DCHECK_GE(write_length, iov_offset);
+  const size_t data_size = write_length - iov_offset;
+  if (!HasRoomForStreamFrame(id, offset, data_size)) {
     return false;
   }
-  CreateStreamFrame(id, write_length, iov_offset, offset, fin, frame);
+  CreateStreamFrame(id, data_size, offset, fin, frame);
   // Explicitly disallow multi-packet CHLOs.
   if (FLAGS_quic_enforce_single_packet_chlo &&
       StreamFrameStartsWithChlo(frame->stream_frame) &&
@@ -267,12 +271,10 @@
 }
 
 void QuicPacketCreator::CreateStreamFrame(QuicStreamId id,
-                                          size_t write_length,
-                                          size_t iov_offset,
+                                          size_t data_size,
                                           QuicStreamOffset offset,
                                           bool fin,
                                           QuicFrame* frame) {
-  const size_t data_size = write_length - iov_offset;
   DCHECK_GT(
       max_packet_length_,
       StreamFramePacketOverhead(
@@ -287,13 +289,9 @@
       << QuicFramer::GetMinStreamFrameSize(framer_->transport_version(), id,
                                            offset, true, data_size);
 
-  if (iov_offset == write_length) {
-    QUIC_BUG_IF(!fin) << "Creating a stream frame with no data or fin.";
-    // Create a new packet for the fin, if necessary.
-    *frame = QuicFrame(QuicStreamFrame(id, true, offset, QuicStringPiece()));
-    return;
-  }
-
+  QUIC_BUG_IF(data_size == 0 && !fin)
+      << "Creating a stream frame for stream ID:" << id
+      << " with no data or fin.";
   size_t min_frame_size = QuicFramer::GetMinStreamFrameSize(
       framer_->transport_version(), id, offset,
       /* last_frame_in_packet= */ true, data_size);
diff --git a/quic/core/quic_packet_creator.h b/quic/core/quic_packet_creator.h
index 7e129e1..76e7726 100644
--- a/quic/core/quic_packet_creator.h
+++ b/quic/core/quic_packet_creator.h
@@ -277,11 +277,10 @@
   friend class test::QuicPacketCreatorPeer;
 
   // Creates a stream frame which fits into the current open packet. If
-  // |write_length| is 0 and fin is true, the expected behavior is to consume
-  // the fin but return 0.
+  // |data_size| is 0 and fin is true, the expected behavior is to consume
+  // the fin.
   void CreateStreamFrame(QuicStreamId id,
-                         size_t write_length,
-                         size_t iov_offset,
+                         size_t data_size,
                          QuicStreamOffset offset,
                          bool fin,
                          QuicFrame* frame);
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc
index efd7485..6727fca 100644
--- a/quic/core/quic_packet_creator_test.cc
+++ b/quic/core/quic_packet_creator_test.cc
@@ -390,7 +390,7 @@
   QuicPacketCreatorPeer::CreateStreamFrame(
       &creator_,
       QuicUtils::GetCryptoStreamId(client_framer_.transport_version()),
-      iov_.iov_len, 0u, 0u, false, &frame);
+      iov_.iov_len, 0u, false, &frame);
   QuicFrames frames;
   frames.push_back(frame);
   char buffer[kMaxPacketSize];
@@ -413,7 +413,7 @@
   QuicPacketCreatorPeer::CreateStreamFrame(
       &creator_,
       QuicUtils::GetCryptoStreamId(client_framer_.transport_version()),
-      iov_.iov_len, 0u, 0u, false, &frame);
+      iov_.iov_len, 0u, false, &frame);
 
   const int kNumPaddingBytes1 = 4;
   int packet_size = 0;
@@ -480,7 +480,7 @@
     QuicPacketCreatorPeer::CreateStreamFrame(
         &creator_,
         QuicUtils::GetCryptoStreamId(client_framer_.transport_version()),
-        iov_.iov_len, 0, kOffset, false, &frame);
+        iov_.iov_len, kOffset, false, &frame);
     QuicFrames frames;
     frames.push_back(frame);
     char buffer[kMaxPacketSize];
@@ -1375,7 +1375,7 @@
   QuicPacketCreatorPeer::CreateStreamFrame(
       &creator_,
       QuicUtils::GetCryptoStreamId(client_framer_.transport_version()),
-      iov_.iov_len, 0u, 0u, false, &frame);
+      iov_.iov_len, 0u, false, &frame);
   QuicFrames frames;
   frames.push_back(frame);
   char buffer[kMaxPacketSize];
diff --git a/quic/test_tools/quic_packet_creator_peer.cc b/quic/test_tools/quic_packet_creator_peer.cc
index 51d9588..f81375f 100644
--- a/quic/test_tools/quic_packet_creator_peer.cc
+++ b/quic/test_tools/quic_packet_creator_peer.cc
@@ -75,12 +75,11 @@
 // static
 void QuicPacketCreatorPeer::CreateStreamFrame(QuicPacketCreator* creator,
                                               QuicStreamId id,
-                                              size_t write_length,
-                                              size_t iov_offset,
+                                              size_t data_length,
                                               QuicStreamOffset offset,
                                               bool fin,
                                               QuicFrame* frame) {
-  creator->CreateStreamFrame(id, write_length, iov_offset, offset, fin, frame);
+  creator->CreateStreamFrame(id, data_length, offset, fin, frame);
 }
 
 // static
diff --git a/quic/test_tools/quic_packet_creator_peer.h b/quic/test_tools/quic_packet_creator_peer.h
index 7cf11e6..0fa962c 100644
--- a/quic/test_tools/quic_packet_creator_peer.h
+++ b/quic/test_tools/quic_packet_creator_peer.h
@@ -36,8 +36,7 @@
                                QuicPacketHeader* header);
   static void CreateStreamFrame(QuicPacketCreator* creator,
                                 QuicStreamId id,
-                                size_t write_length,
-                                size_t iov_offset,
+                                size_t data_length,
                                 QuicStreamOffset offset,
                                 bool fin,
                                 QuicFrame* frame);
