Index: net/spdy/spdy_framer.cc |
diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc |
index 08f32dd3c79603c27eb8be801e228cbb5d8537e2..2a2fb4d24723e82877a9d3eb8f3cd4ea337905f8 100644 |
--- a/net/spdy/spdy_framer.cc |
+++ b/net/spdy/spdy_framer.cc |
@@ -82,10 +82,8 @@ void UnpackStreamDependencyValues(uint32_t packed, |
struct DictionaryIds { |
DictionaryIds() |
- : v2_dictionary_id(CalculateDictionaryId(kV2Dictionary, kV2DictionarySize)), |
- v3_dictionary_id(CalculateDictionaryId(kV3Dictionary, kV3DictionarySize)) |
- {} |
- const uLong v2_dictionary_id; |
+ : v3_dictionary_id( |
+ CalculateDictionaryId(kV3Dictionary, kV3DictionarySize)) {} |
const uLong v3_dictionary_id; |
}; |
@@ -137,9 +135,6 @@ const size_t SpdyFramer::kControlFrameBufferSize = 19; |
SettingsFlagsAndId SettingsFlagsAndId::FromWireFormat(SpdyMajorVersion version, |
uint32_t wire) { |
- if (version < SPDY3) { |
- ConvertFlagsAndIdForSpdy2(&wire); |
- } |
return SettingsFlagsAndId(base::NetToHost32(wire) >> 24, |
base::NetToHost32(wire) & 0x00ffffff); |
} |
@@ -150,23 +145,7 @@ SettingsFlagsAndId::SettingsFlagsAndId(uint8_t flags, uint32_t id) |
} |
uint32_t SettingsFlagsAndId::GetWireFormat(SpdyMajorVersion version) const { |
- uint32_t wire = |
- base::HostToNet32(id_ & 0x00ffffff) | base::HostToNet32(flags_ << 24); |
- if (version < SPDY3) { |
- ConvertFlagsAndIdForSpdy2(&wire); |
- } |
- return wire; |
-} |
- |
-// SPDY 2 had a bug in it with respect to byte ordering of id/flags field. |
-// This method is used to preserve buggy behavior and works on both |
-// little-endian and big-endian hosts. |
-// This method is also bidirectional (can be used to translate SPDY 2 to SPDY 3 |
-// as well as vice versa). |
-void SettingsFlagsAndId::ConvertFlagsAndIdForSpdy2(uint32_t* val) { |
- uint8_t* wire_array = reinterpret_cast<uint8_t*>(val); |
- std::swap(wire_array[0], wire_array[3]); |
- std::swap(wire_array[1], wire_array[2]); |
+ return base::HostToNet32(id_ & 0x00ffffff) | base::HostToNet32(flags_ << 24); |
} |
bool SpdyFramerVisitorInterface::OnGoAwayFrameData(const char* goaway_data, |
@@ -258,11 +237,6 @@ size_t SpdyFramer::GetSynReplyMinimumSize() const { |
size += 4; |
} |
- // In SPDY 2, there were 2 unused bytes before payload. |
- if (protocol_version() < SPDY3) { |
- size += 2; |
- } |
- |
return size; |
} |
@@ -311,10 +285,8 @@ size_t SpdyFramer::GetGoAwayMinimumSize() const { |
// 2. Last good stream id (4 bytes) |
size += 4; |
- // 3. SPDY 3+ GOAWAY frames also contain a status (4 bytes) |
- if (protocol_version() >= SPDY3) { |
- size += 4; |
- } |
+ // 3. GOAWAY frames also contain a status (4 bytes) |
+ size += 4; |
return size; |
} |
@@ -329,11 +301,6 @@ size_t SpdyFramer::GetHeadersMinimumSize() const { |
size += 4; |
} |
- // In SPDY 2, there were 2 unused bytes before payload. |
- if (protocol_version() <= SPDY2) { |
- size += 2; |
- } |
- |
return size; |
} |
@@ -1198,8 +1165,7 @@ size_t SpdyFramer::UpdateCurrentFrameBuffer(const char** data, size_t* len, |
size_t SpdyFramer::GetSerializedLength( |
const SpdyMajorVersion spdy_version, |
const SpdyHeaderBlock* headers) { |
- const size_t num_name_value_pairs_size = |
- (spdy_version < SPDY3) ? sizeof(uint16_t) : sizeof(uint32_t); |
+ const size_t num_name_value_pairs_size = sizeof(uint32_t); |
const size_t length_of_name_size = num_name_value_pairs_size; |
const size_t length_of_value_size = num_name_value_pairs_size; |
@@ -1216,20 +1182,11 @@ size_t SpdyFramer::GetSerializedLength( |
void SpdyFramer::WriteHeaderBlock(SpdyFrameBuilder* frame, |
const SpdyMajorVersion spdy_version, |
const SpdyHeaderBlock* headers) { |
- if (spdy_version < SPDY3) { |
- frame->WriteUInt16(static_cast<uint16_t>(headers->size())); |
- } else { |
- frame->WriteUInt32(headers->size()); |
- } |
+ frame->WriteUInt32(headers->size()); |
SpdyHeaderBlock::const_iterator it; |
for (it = headers->begin(); it != headers->end(); ++it) { |
- if (spdy_version < SPDY3) { |
- frame->WriteStringPiece16(it->first); |
- frame->WriteStringPiece16(it->second); |
- } else { |
- frame->WriteStringPiece32(it->first); |
- frame->WriteStringPiece32(it->second); |
- } |
+ frame->WriteStringPiece32(it->first); |
+ frame->WriteStringPiece32(it->second); |
} |
} |
@@ -1307,10 +1264,7 @@ static void WriteLengthZ(size_t n, |
// cookie data. |
void SpdyFramer::WriteHeaderBlockToZ(const SpdyHeaderBlock* headers, |
z_stream* z) const { |
- unsigned length_length = 4; |
- if (protocol_version() < 3) |
- length_length = 2; |
- |
+ const size_t length_length = 4; |
WriteLengthZ(headers->size(), length_length, kZStandardData, z); |
SpdyHeaderBlock::const_iterator it; |
@@ -1443,11 +1397,7 @@ size_t SpdyFramer::ProcessControlFrameBeforeHeaderBlock(const char* data, |
SpdyPriority priority = 0; |
successful_read = reader.ReadUInt8(&priority); |
DCHECK(successful_read); |
- if (protocol_version() <= SPDY2) { |
- priority = priority >> 6; |
- } else { |
- priority = priority >> 5; |
- } |
+ priority = priority >> 5; |
// Seek past unused byte. |
reader.Seek(1); |
@@ -1495,10 +1445,6 @@ size_t SpdyFramer::ProcessControlFrameBeforeHeaderBlock(const char* data, |
set_error(SPDY_INVALID_CONTROL_FRAME); |
break; |
} |
- if (protocol_version() <= SPDY2) { |
- // SPDY 2 had two unused bytes here. Seek past them. |
- reader.Seek(2); |
- } |
if (protocol_version() > SPDY3 && |
!(current_frame_flags_ & HEADERS_FLAG_END_HEADERS) && |
current_frame_type_ == HEADERS) { |
@@ -2209,18 +2155,9 @@ bool SpdyFramer::ParseHeaderBlockInBuffer(const char* header_data, |
// Read number of headers. |
uint32_t num_headers; |
- if (protocol_version() <= SPDY2) { |
- uint16_t temp; |
- if (!reader.ReadUInt16(&temp)) { |
- DVLOG(1) << "Unable to read number of headers."; |
- return false; |
- } |
- num_headers = temp; |
- } else { |
- if (!reader.ReadUInt32(&num_headers)) { |
- DVLOG(1) << "Unable to read number of headers."; |
- return false; |
- } |
+ if (!reader.ReadUInt32(&num_headers)) { |
+ DVLOG(1) << "Unable to read number of headers."; |
+ return false; |
} |
// Read each header. |
@@ -2228,8 +2165,7 @@ bool SpdyFramer::ParseHeaderBlockInBuffer(const char* header_data, |
base::StringPiece temp; |
// Read header name. |
- if ((protocol_version() <= SPDY2) ? !reader.ReadStringPiece16(&temp) |
- : !reader.ReadStringPiece32(&temp)) { |
+ if (!reader.ReadStringPiece32(&temp)) { |
DVLOG(1) << "Unable to read header name (" << index + 1 << " of " |
<< num_headers << ")."; |
return false; |
@@ -2237,8 +2173,7 @@ bool SpdyFramer::ParseHeaderBlockInBuffer(const char* header_data, |
std::string name = temp.as_string(); |
// Read header value. |
- if ((protocol_version() <= SPDY2) ? !reader.ReadStringPiece16(&temp) |
- : !reader.ReadStringPiece32(&temp)) { |
+ if (!reader.ReadStringPiece32(&temp)) { |
DVLOG(1) << "Unable to read header value (" << index + 1 << " of " |
<< num_headers << ")."; |
return false; |
@@ -2363,7 +2298,7 @@ SpdySerializedFrame* SpdyFramer::SerializeSynStream( |
builder.WriteControlFrameHeader(*this, SYN_STREAM, flags); |
builder.WriteUInt32(syn_stream.stream_id()); |
builder.WriteUInt32(syn_stream.associated_to_stream_id()); |
- builder.WriteUInt8(priority << ((protocol_version() <= SPDY2) ? 6 : 5)); |
+ builder.WriteUInt8(priority << 5); |
builder.WriteUInt8(0); // Unused byte. |
DCHECK_EQ(GetSynStreamMinimumSize(), builder.length()); |
SerializeHeaderBlock(&builder, syn_stream); |
@@ -2402,9 +2337,6 @@ SpdySerializedFrame* SpdyFramer::SerializeSynReply( |
flags, |
syn_reply.stream_id()); |
} |
- if (protocol_version() < SPDY3) { |
- builder.WriteUInt16(0); // Unused. |
- } |
DCHECK_EQ(GetSynReplyMinimumSize(), builder.length()); |
SerializeHeaderBlock(&builder, syn_reply); |
@@ -2544,7 +2476,7 @@ SpdySerializedFrame* SpdyFramer::SerializeGoAway( |
// GOAWAY frames specify the last good stream id for all SPDY versions. |
builder.WriteUInt32(goaway.last_good_stream_id()); |
- // In SPDY3 and up, GOAWAY frames also specify the error status code. |
+ // GOAWAY frames also specify the error status code. |
if (protocol_version() >= SPDY3) { |
// TODO(jgraettinger): Merge back to server-side. |
builder.WriteUInt32(SpdyConstants::SerializeGoAwayStatus(protocol_version(), |
@@ -2625,9 +2557,6 @@ SpdySerializedFrame* SpdyFramer::SerializeHeaders( |
flags, |
headers.stream_id()); |
} |
- if (protocol_version() <= SPDY2) { |
- builder.WriteUInt16(0); // Unused. |
- } |
DCHECK_EQ(GetHeadersMinimumSize(), builder.length()); |
if (protocol_version() > SPDY3) { |
@@ -2990,10 +2919,8 @@ z_stream* SpdyFramer::GetHeaderCompressor() { |
kCompressorMemLevel, |
Z_DEFAULT_STRATEGY); |
if (success == Z_OK) { |
- const char* dictionary = (protocol_version() <= SPDY2) ? |
- kV2Dictionary : kV3Dictionary; |
- const int dictionary_size = (protocol_version() <= SPDY2) ? |
- kV2DictionarySize : kV3DictionarySize; |
+ const char* dictionary = kV3Dictionary; |
+ const int dictionary_size = kV3DictionarySize; |
success = deflateSetDictionary(header_compressor_.get(), |
reinterpret_cast<const Bytef*>(dictionary), |
dictionary_size); |
@@ -3080,13 +3007,10 @@ bool SpdyFramer::IncrementallyDecompressControlFrameHeaderData( |
int rv = inflate(decomp, Z_SYNC_FLUSH); |
if (rv == Z_NEED_DICT) { |
- const char* dictionary = (protocol_version() <= SPDY2) ? kV2Dictionary |
- : kV3Dictionary; |
- const int dictionary_size = (protocol_version() <= SPDY2) ? |
- kV2DictionarySize : kV3DictionarySize; |
+ const char* dictionary = kV3Dictionary; |
+ const int dictionary_size = kV3DictionarySize; |
const DictionaryIds& ids = g_dictionary_ids.Get(); |
- const uLong dictionary_id = (protocol_version() <= SPDY2) ? |
- ids.v2_dictionary_id : ids.v3_dictionary_id; |
+ const uLong dictionary_id = ids.v3_dictionary_id; |
// Need to try again with the right dictionary. |
if (decomp->adler == dictionary_id) { |
rv = inflateSetDictionary(decomp, |
@@ -3157,21 +3081,12 @@ void SpdyFramer::SerializeHeaderBlockWithoutCompression( |
SpdyFrameBuilder* builder, |
const SpdyHeaderBlock& header_block) const { |
// Serialize number of headers. |
- if (protocol_version() <= SPDY2) { |
- builder->WriteUInt16(static_cast<uint16_t>(header_block.size())); |
- } else { |
- builder->WriteUInt32(header_block.size()); |
- } |
+ builder->WriteUInt32(header_block.size()); |
// Serialize each header. |
for (const auto& header : header_block) { |
- if (protocol_version() <= SPDY2) { |
- builder->WriteStringPiece16(header.first); |
- builder->WriteStringPiece16(header.second); |
- } else { |
- builder->WriteStringPiece32(header.first); |
- builder->WriteStringPiece32(header.second); |
- } |
+ builder->WriteStringPiece32(header.first); |
+ builder->WriteStringPiece32(header.second); |
} |
} |