Index: net/spdy/spdy_framer.cc |
diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc |
index 2d18e0c56b4dd444b57c65fc893d4383e439f463..5481b4f0dffd9d4d7e6ea76071f98bebbc83215a 100644 |
--- a/net/spdy/spdy_framer.cc |
+++ b/net/spdy/spdy_framer.cc |
@@ -663,7 +663,6 @@ size_t SpdyFramer::ProcessCommonHeader(const char* data, size_t len) { |
uint16 length_field = 0; |
bool successful_read = reader->ReadUInt16(&length_field); |
DCHECK(successful_read); |
- current_frame_length_ = length_field; |
uint8 control_frame_type_field_uint8 = DATA; |
successful_read = reader->ReadUInt8(&control_frame_type_field_uint8); |
@@ -673,6 +672,12 @@ size_t SpdyFramer::ProcessCommonHeader(const char* data, size_t len) { |
control_frame_type_field = control_frame_type_field_uint8; |
is_control_frame = (control_frame_type_field != DATA); |
+ if (is_control_frame) { |
+ current_frame_length_ = length_field + GetControlFrameHeaderSize(); |
+ } else { |
+ current_frame_length_ = length_field + GetDataFrameMinimumSize(); |
+ } |
+ |
successful_read = reader->ReadUInt8(¤t_frame_flags_); |
DCHECK(successful_read); |
@@ -2068,11 +2073,7 @@ SpdySerializedFrame* SpdyFramer::SerializeDataFrameHeader( |
SpdyFrameBuilder builder(kSize); |
builder.WriteDataFrameHeader(*this, data.stream_id(), flags); |
- if (protocol_version() >= 4) { |
- builder.OverwriteLength(*this, data.data().length() + kSize); |
- } else { |
- builder.OverwriteLength(*this, data.data().length()); |
- } |
+ builder.OverwriteLength(*this, data.data().length()); |
DCHECK_EQ(kSize, builder.length()); |
return builder.take(); |
} |