diff --git a/quic/core/http/quic_spdy_stream_body_buffer.cc b/quic/core/http/quic_spdy_stream_body_buffer.cc
index d175e13..4238a3b 100644
--- a/quic/core/http/quic_spdy_stream_body_buffer.cc
+++ b/quic/core/http/quic_spdy_stream_body_buffer.cc
@@ -61,6 +61,7 @@
     }
   }
   // Consume headers.
+  size_t bytes_to_consume = 0;
   while (bytes_remaining_ < num_bytes) {
     if (frame_meta_.empty()) {
       QUIC_BUG << "Faild to consume because frame header buffer is empty.";
@@ -69,12 +70,14 @@
     auto meta = frame_meta_.front();
     frame_meta_.pop_front();
     bytes_remaining_ += meta.payload_length;
-    sequencer_->MarkConsumed(meta.header_length);
+    bytes_to_consume += meta.header_length;
   }
-  sequencer_->MarkConsumed(num_bytes);
+  bytes_to_consume += num_bytes;
   // Update accountings.
   bytes_remaining_ -= num_bytes;
   total_body_bytes_readable_ -= num_bytes;
+
+  sequencer_->MarkConsumed(bytes_to_consume);
 }
 
 int QuicSpdyStreamBodyBuffer::PeekBody(iovec* iov, size_t iov_len) const {
diff --git a/quic/core/http/quic_spdy_stream_body_buffer_test.cc b/quic/core/http/quic_spdy_stream_body_buffer_test.cc
index 6e8e20d..a47880e 100644
--- a/quic/core/http/quic_spdy_stream_body_buffer_test.cc
+++ b/quic/core/http/quic_spdy_stream_body_buffer_test.cc
@@ -95,8 +95,7 @@
   sequencer_.OnStreamFrame(frame);
   body_buffer_.OnDataHeader(lengths);
   body_buffer_.OnDataPayload(QuicStringPiece(body));
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length));
-  EXPECT_CALL(stream_, AddBytesConsumed(1024));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length + 1024));
   body_buffer_.MarkBodyConsumed(1024);
 }
 
@@ -128,11 +127,9 @@
   body_buffer_.OnDataHeader(lengths2);
   body_buffer_.OnDataPayload(QuicStringPiece(body2));
 
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length1));
-  EXPECT_CALL(stream_, AddBytesConsumed(512));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length1 + 512));
   body_buffer_.MarkBodyConsumed(512);
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length2));
-  EXPECT_CALL(stream_, AddBytesConsumed(2048));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length2 + 2048));
   body_buffer_.MarkBodyConsumed(2048);
   EXPECT_CALL(stream_, AddBytesConsumed(512));
   body_buffer_.MarkBodyConsumed(512);
@@ -164,8 +161,7 @@
   body_buffer_.OnDataHeader(lengths);
   body_buffer_.OnDataPayload(QuicStringPiece(body));
 
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length));
-  EXPECT_CALL(stream_, AddBytesConsumed(1024));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length + 1024));
 
   char base[1024];
   iovec iov = {&base[0], 1024};
@@ -204,8 +200,7 @@
   body_buffer_.OnDataPayload(QuicStringPiece(body2));
 
   // First read of 512 bytes.
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length1));
-  EXPECT_CALL(stream_, AddBytesConsumed(512));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length1 + 512));
   char base[512];
   iovec iov = {&base[0], 512};
   EXPECT_EQ(512u, body_buffer_.ReadBody(&iov, 1));
@@ -214,8 +209,7 @@
             QuicStringPiece(static_cast<const char*>(iov.iov_base), 512));
 
   // Second read of 2048 bytes.
-  EXPECT_CALL(stream_, AddBytesConsumed(header_length2));
-  EXPECT_CALL(stream_, AddBytesConsumed(2048));
+  EXPECT_CALL(stream_, AddBytesConsumed(header_length2 + 2048));
   char base2[2048];
   iovec iov2 = {&base2[0], 2048};
   EXPECT_EQ(2048u, body_buffer_.ReadBody(&iov2, 1));
