Index: net/spdy/core/spdy_framer.cc |
diff --git a/net/spdy/core/spdy_framer.cc b/net/spdy/core/spdy_framer.cc |
index e9968057212e031c4bdf354ed4fe7989780b4d3c..7d81e9072433e87b02869f5f3df2ef02dca035bd 100644 |
--- a/net/spdy/core/spdy_framer.cc |
+++ b/net/spdy/core/spdy_framer.cc |
@@ -12,7 +12,6 @@ |
#include <iterator> |
#include <list> |
#include <new> |
-#include <vector> |
#include "base/lazy_instance.h" |
#include "base/logging.h" |
@@ -33,8 +32,6 @@ |
#include "net/spdy/platform/api/spdy_ptr_util.h" |
#include "net/spdy/platform/api/spdy_string_utils.h" |
-using std::vector; |
- |
namespace net { |
namespace { |
@@ -1022,12 +1019,10 @@ size_t SpdyFramer::ProcessControlFrameBeforeHeaderBlock(const char* data, |
DCHECK(successful_read); |
remaining_padding_payload_length_ = pad_payload_len; |
} |
- const bool has_priority = |
- (current_frame_flags_ & HEADERS_FLAG_PRIORITY) != 0; |
int weight = 0; |
uint32_t parent_stream_id = 0; |
bool exclusive = false; |
- if (has_priority) { |
+ if (current_frame_flags_ & HEADERS_FLAG_PRIORITY) { |
uint32_t stream_dependency; |
successful_read = reader.ReadUInt32(&stream_dependency); |
DCHECK(successful_read); |
@@ -1053,70 +1048,62 @@ size_t SpdyFramer::ProcessControlFrameBeforeHeaderBlock(const char* data, |
weight, parent_stream_id, exclusive, |
(current_frame_flags_ & CONTROL_FLAG_FIN) != 0, |
expect_continuation_ == 0); |
+ } break; |
Biren Roy
2017/05/24 15:25:09
This line looks weird, but I see it's the same in
Bence
2017/05/24 15:38:48
Yeah, I agree. Maybe if I move all local variable
|
+ case SpdyFrameType::PUSH_PROMISE: { |
+ if (current_frame_stream_id_ == 0) { |
+ set_error(SPDY_INVALID_CONTROL_FRAME); |
+ return original_len - len; |
} |
- break; |
- case SpdyFrameType::PUSH_PROMISE: { |
- if (current_frame_stream_id_ == 0) { |
- set_error(SPDY_INVALID_CONTROL_FRAME); |
- return original_len - len; |
- } |
- bool successful_read = true; |
- if (current_frame_flags_ & PUSH_PROMISE_FLAG_PADDED) { |
- DCHECK_EQ(remaining_padding_payload_length_, 0u); |
- uint8_t pad_payload_len = 0; |
- successful_read = reader.ReadUInt8(&pad_payload_len); |
- DCHECK(successful_read); |
- remaining_padding_payload_length_ = pad_payload_len; |
- } |
- } |
- { |
- SpdyStreamId promised_stream_id = kInvalidStream; |
- bool successful_read = reader.ReadUInt31(&promised_stream_id); |
+ bool successful_read = true; |
+ if (current_frame_flags_ & PUSH_PROMISE_FLAG_PADDED) { |
+ DCHECK_EQ(remaining_padding_payload_length_, 0u); |
+ uint8_t pad_payload_len = 0; |
+ successful_read = reader.ReadUInt8(&pad_payload_len); |
DCHECK(successful_read); |
- DCHECK(reader.IsDoneReading()); |
- if (promised_stream_id == 0) { |
- set_error(SPDY_INVALID_CONTROL_FRAME); |
- return original_len - len; |
- } |
- if (!(current_frame_flags_ & PUSH_PROMISE_FLAG_END_PUSH_PROMISE)) { |
- expect_continuation_ = current_frame_stream_id_; |
- } |
- if (debug_visitor_) { |
- debug_visitor_->OnReceiveCompressedFrame( |
- current_frame_stream_id_, |
- current_frame_type_, |
- current_frame_length_); |
- } |
- visitor_->OnPushPromise(current_frame_stream_id_, |
- promised_stream_id, |
- (current_frame_flags_ & |
- PUSH_PROMISE_FLAG_END_PUSH_PROMISE) != 0); |
+ remaining_padding_payload_length_ = pad_payload_len; |
} |
- break; |
- case SpdyFrameType::CONTINUATION: { |
- // Check to make sure the stream id of the current frame is |
- // the same as that of the preceding frame. |
- // If we're at this point we should already know that |
- // expect_continuation_ != 0, so this doubles as a check |
- // that current_frame_stream_id != 0. |
- if (current_frame_stream_id_ != expect_continuation_) { |
- set_error(SPDY_UNEXPECTED_FRAME); |
- return original_len - len; |
- } |
- if (current_frame_flags_ & HEADERS_FLAG_END_HEADERS) { |
- expect_continuation_ = 0; |
- } |
- if (debug_visitor_) { |
- debug_visitor_->OnReceiveCompressedFrame( |
- current_frame_stream_id_, |
- current_frame_type_, |
- current_frame_length_); |
- } |
- visitor_->OnContinuation(current_frame_stream_id_, |
- (current_frame_flags_ & |
- HEADERS_FLAG_END_HEADERS) != 0); |
+ SpdyStreamId promised_stream_id = kInvalidStream; |
+ successful_read = reader.ReadUInt31(&promised_stream_id); |
+ DCHECK(successful_read); |
+ DCHECK(reader.IsDoneReading()); |
+ if (promised_stream_id == 0) { |
+ set_error(SPDY_INVALID_CONTROL_FRAME); |
+ return original_len - len; |
} |
- break; |
+ if (!(current_frame_flags_ & PUSH_PROMISE_FLAG_END_PUSH_PROMISE)) { |
+ expect_continuation_ = current_frame_stream_id_; |
+ } |
+ if (debug_visitor_) { |
+ debug_visitor_->OnReceiveCompressedFrame(current_frame_stream_id_, |
+ current_frame_type_, |
+ current_frame_length_); |
+ } |
+ visitor_->OnPushPromise( |
+ current_frame_stream_id_, promised_stream_id, |
+ (current_frame_flags_ & PUSH_PROMISE_FLAG_END_PUSH_PROMISE) != 0); |
+ } break; |
+ case SpdyFrameType::CONTINUATION: { |
+ // Check to make sure the stream id of the current frame is |
+ // the same as that of the preceding frame. |
+ // If we're at this point we should already know that |
+ // expect_continuation_ != 0, so this doubles as a check |
+ // that current_frame_stream_id != 0. |
+ if (current_frame_stream_id_ != expect_continuation_) { |
+ set_error(SPDY_UNEXPECTED_FRAME); |
+ return original_len - len; |
+ } |
+ if (current_frame_flags_ & HEADERS_FLAG_END_HEADERS) { |
+ expect_continuation_ = 0; |
+ } |
+ if (debug_visitor_) { |
+ debug_visitor_->OnReceiveCompressedFrame(current_frame_stream_id_, |
+ current_frame_type_, |
+ current_frame_length_); |
+ } |
+ visitor_->OnContinuation( |
+ current_frame_stream_id_, |
+ (current_frame_flags_ & HEADERS_FLAG_END_HEADERS) != 0); |
+ } break; |
default: |
#ifndef NDEBUG |
LOG(FATAL) << "Invalid control frame type: " << current_frame_type_; |
@@ -1621,12 +1608,12 @@ size_t SpdyFramer::SpdyFrameIterator::NextFrame(ZeroCopyOutputBuffer* output) { |
debug_total_size_ += size_without_block; |
debug_total_size_ += encoding->size(); |
if (!has_next_frame_) { |
- auto* header_block_frame_ir = |
- static_cast<const SpdyFrameWithHeaderBlockIR*>(frame_ir); |
// TODO(birenroy) are these (here and below) still necessary? |
// HTTP2 uses HPACK for header compression. However, continue to |
// use GetSerializedLength() for an apples-to-apples comparision of |
// compression performance between HPACK and SPDY w/ deflate. |
+ auto* header_block_frame_ir = |
+ static_cast<const SpdyFrameWithHeaderBlockIR*>(frame_ir); |
size_t debug_payload_len = |
framer_->GetSerializedLength(&header_block_frame_ir->header_block()); |
framer_->debug_visitor_->OnSendCompressedFrame( |
@@ -2844,29 +2831,6 @@ HpackDecoderInterface* SpdyFramer::GetHpackDecoder() { |
return hpack_decoder_.get(); |
} |
-void SpdyFramer::SetDecoderHeaderTableDebugVisitor( |
- std::unique_ptr<HpackHeaderTable::DebugVisitorInterface> visitor) { |
- if (decoder_adapter_ != nullptr) { |
- decoder_adapter_->SetDecoderHeaderTableDebugVisitor(std::move(visitor)); |
- } else { |
- GetHpackDecoder()->SetHeaderTableDebugVisitor(std::move(visitor)); |
- } |
-} |
- |
-void SpdyFramer::SetEncoderHeaderTableDebugVisitor( |
- std::unique_ptr<HpackHeaderTable::DebugVisitorInterface> visitor) { |
- GetHpackEncoder()->SetHeaderTableDebugVisitor(std::move(visitor)); |
-} |
- |
-size_t SpdyFramer::EstimateMemoryUsage() const { |
- return SpdyEstimateMemoryUsage(current_frame_buffer_) + |
- SpdyEstimateMemoryUsage(settings_scratch_) + |
- SpdyEstimateMemoryUsage(altsvc_scratch_) + |
- SpdyEstimateMemoryUsage(hpack_encoder_) + |
- SpdyEstimateMemoryUsage(hpack_decoder_) + |
- SpdyEstimateMemoryUsage(decoder_adapter_); |
-} |
- |
void SpdyFramer::UpdateHeaderEncoderTableSize(uint32_t value) { |
GetHpackEncoder()->ApplyHeaderTableSizeSetting(value); |
} |
@@ -2896,4 +2860,27 @@ void SpdyFramer::SerializeHeaderBlockWithoutCompression( |
} |
} |
+void SpdyFramer::SetDecoderHeaderTableDebugVisitor( |
+ std::unique_ptr<HpackHeaderTable::DebugVisitorInterface> visitor) { |
+ if (decoder_adapter_ != nullptr) { |
+ decoder_adapter_->SetDecoderHeaderTableDebugVisitor(std::move(visitor)); |
+ } else { |
+ GetHpackDecoder()->SetHeaderTableDebugVisitor(std::move(visitor)); |
+ } |
+} |
+ |
+void SpdyFramer::SetEncoderHeaderTableDebugVisitor( |
+ std::unique_ptr<HpackHeaderTable::DebugVisitorInterface> visitor) { |
+ GetHpackEncoder()->SetHeaderTableDebugVisitor(std::move(visitor)); |
+} |
+ |
+size_t SpdyFramer::EstimateMemoryUsage() const { |
+ return SpdyEstimateMemoryUsage(current_frame_buffer_) + |
+ SpdyEstimateMemoryUsage(settings_scratch_) + |
+ SpdyEstimateMemoryUsage(altsvc_scratch_) + |
+ SpdyEstimateMemoryUsage(hpack_encoder_) + |
+ SpdyEstimateMemoryUsage(hpack_decoder_) + |
+ SpdyEstimateMemoryUsage(decoder_adapter_); |
+} |
+ |
} // namespace net |