diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/spdy/buffered_spdy_framer.cc | 2 | ||||
-rw-r--r-- | net/spdy/buffered_spdy_framer.h | 2 | ||||
-rw-r--r-- | net/spdy/spdy_framer.cc | 35 | ||||
-rw-r--r-- | net/spdy/spdy_framer.h | 9 | ||||
-rw-r--r-- | net/spdy/spdy_framer_test.cc | 11 | ||||
-rw-r--r-- | net/spdy/spdy_protocol.h | 38 | ||||
-rw-r--r-- | net/spdy/spdy_protocol_test.cc | 52 | ||||
-rw-r--r-- | net/spdy/spdy_session.cc | 2 | ||||
-rw-r--r-- | net/tools/flip_server/spdy_interface.cc | 2 |
9 files changed, 11 insertions, 142 deletions
diff --git a/net/spdy/buffered_spdy_framer.cc b/net/spdy/buffered_spdy_framer.cc index 9f19d58..15b560b 100644 --- a/net/spdy/buffered_spdy_framer.cc +++ b/net/spdy/buffered_spdy_framer.cc @@ -243,7 +243,7 @@ SpdyFrame* BufferedSpdyFramer::CreateRstStream( return spdy_framer_.CreateRstStream(stream_id, status); } -SpdySettingsControlFrame* BufferedSpdyFramer::CreateSettings( +SpdyFrame* BufferedSpdyFramer::CreateSettings( const SettingsMap& values) const { return spdy_framer_.CreateSettings(values); } diff --git a/net/spdy/buffered_spdy_framer.h b/net/spdy/buffered_spdy_framer.h index dfbcc34..c8f5077 100644 --- a/net/spdy/buffered_spdy_framer.h +++ b/net/spdy/buffered_spdy_framer.h @@ -160,7 +160,7 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramer const SpdyHeaderBlock* headers); SpdyFrame* CreateRstStream(SpdyStreamId stream_id, SpdyRstStreamStatus status) const; - SpdySettingsControlFrame* CreateSettings(const SettingsMap& values) const; + SpdyFrame* CreateSettings(const SettingsMap& values) const; SpdyFrame* CreatePingFrame(uint32 unique_id) const; SpdyFrame* CreateGoAway( SpdyStreamId last_accepted_stream_id, diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc index 32909d0..5b94312 100644 --- a/net/spdy/spdy_framer.cc +++ b/net/spdy/spdy_framer.cc @@ -679,7 +679,7 @@ void SpdyFramer::ProcessControlFrameHeader() { frame_size_without_variable_data = GetHeadersMinimumSize(); break; case SETTINGS: - frame_size_without_variable_data = SpdySettingsControlFrame::size(); + frame_size_without_variable_data = GetSettingsMinimumSize(); break; default: frame_size_without_variable_data = -1; @@ -1397,34 +1397,6 @@ size_t SpdyFramer::ParseHeaderBlockInBuffer(const char* header_data, return reader.GetBytesConsumed(); } -// TODO(hkhalil): Remove, or move to test utils kit. -/* static */ -bool SpdyFramer::ParseSettings(const SpdySettingsControlFrame* frame, - SettingsMap* settings) { - DCHECK_EQ(frame->type(), SETTINGS); - DCHECK(settings); - - SpdyFrameReader parser(frame->header_block(), frame->header_block_len()); - for (size_t index = 0; index < frame->num_entries(); ++index) { - uint32 id_and_flags_wire; - uint32 value; - // SettingsFlagsAndId accepts off-the-wire (network byte order) data, so we - // use ReadBytes() instead of ReadUInt32() as the latter calls ntohl(). - if (!parser.ReadBytes(&id_and_flags_wire, 4)) { - return false; - } - if (!parser.ReadUInt32(&value)) - return false; - SettingsFlagsAndId flags_and_id = - SettingsFlagsAndId::FromWireFormat(frame->version(), id_and_flags_wire); - SpdySettingsIds id = static_cast<SpdySettingsIds>(flags_and_id.id()); - SpdySettingsFlags flags = - static_cast<SpdySettingsFlags>(flags_and_id.flags()); - (*settings)[id] = SettingsFlagsAndValue(flags, value); - } - return true; -} - /* static */ bool SpdyFramer::ParseCredentialData(const char* data, size_t len, SpdyCredential* credential) { @@ -1570,7 +1542,7 @@ SpdySerializedFrame* SpdyFramer::SerializeRstStream( return builder.take(); } -SpdySettingsControlFrame* SpdyFramer::CreateSettings( +SpdyFrame* SpdyFramer::CreateSettings( const SettingsMap& values) const { SpdySettingsIR settings; for (SettingsMap::const_iterator it = values.begin(); @@ -1581,8 +1553,7 @@ SpdySettingsControlFrame* SpdyFramer::CreateSettings( (it->second.first & SETTINGS_FLAG_PERSISTED) != 0, it->second.second); } - return reinterpret_cast<SpdySettingsControlFrame*>( - SerializeSettings(settings)); + return SerializeSettings(settings); } SpdySerializedFrame* SpdyFramer::SerializeSettings( diff --git a/net/spdy/spdy_framer.h b/net/spdy/spdy_framer.h index 5e29d78..42c377c2 100644 --- a/net/spdy/spdy_framer.h +++ b/net/spdy/spdy_framer.h @@ -385,9 +385,9 @@ class NET_EXPORT_PRIVATE SpdyFramer { SpdySerializedFrame* SerializeRstStream( const SpdyRstStreamIR& rst_stream) const; - // Creates an instance of SpdySettingsControlFrame. The SETTINGS frame is + // Creates and serializes a SETTINGS frame. The SETTINGS frame is // used to communicate name/value pairs relevant to the communication channel. - SpdySettingsControlFrame* CreateSettings(const SettingsMap& values) const; + SpdyFrame* CreateSettings(const SettingsMap& values) const; SpdySerializedFrame* SerializeSettings(const SpdySettingsIR& settings) const; // Creates and serializes a PING frame. The unique_id is used to @@ -427,11 +427,6 @@ class NET_EXPORT_PRIVATE SpdyFramer { SpdySerializedFrame* SerializeCredential( const SpdyCredentialIR& credential) const; - // Given a SpdySettingsControlFrame, extract the settings. - // Returns true on successful parse, false otherwise. - static bool ParseSettings(const SpdySettingsControlFrame* frame, - SettingsMap* settings); - // Given a CREDENTIAL frame's payload, extract the credential. // Returns true on successful parse, false otherwise. // TODO(hkhalil): Implement CREDENTIAL frame parsing in SpdyFramer diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc index 2fac2f9..8daaca5 100644 --- a/net/spdy/spdy_framer_test.cc +++ b/net/spdy/spdy_framer_test.cc @@ -2090,18 +2090,11 @@ TEST_P(SpdyFramerTest, CreateSettings) { 0x0a, 0x0b, 0x0c, 0x0d, }; - scoped_ptr<SpdySettingsControlFrame> frame(framer.CreateSettings(settings)); + scoped_ptr<SpdyFrame> frame(framer.CreateSettings(settings)); CompareFrame(kDescription, *frame, IsSpdy2() ? kFrameDatav2 : kFrameDatav3, arraysize(kFrameDatav3)); // Size is unchanged among versions. - - // Make sure that ParseSettings also works as advertised. - SettingsMap parsed_settings; - EXPECT_TRUE(framer.ParseSettings(frame.get(), &parsed_settings)); - EXPECT_EQ(settings.size(), parsed_settings.size()); - EXPECT_EQ(kFlags, parsed_settings[kId].first); - EXPECT_EQ(kValue, parsed_settings[kId].second); } { @@ -2130,7 +2123,7 @@ TEST_P(SpdyFramerTest, CreateSettings) { 0x03, 0x00, 0x00, 0x03, // 4th Setting 0xff, 0x00, 0x00, 0x04, }; - scoped_ptr<SpdySettingsControlFrame> frame(framer.CreateSettings(settings)); + scoped_ptr<SpdyFrame> frame(framer.CreateSettings(settings)); CompareFrame(kDescription, *frame, kFrameData, diff --git a/net/spdy/spdy_protocol.h b/net/spdy/spdy_protocol.h index 8835f1c..6b698c0 100644 --- a/net/spdy/spdy_protocol.h +++ b/net/spdy/spdy_protocol.h @@ -483,12 +483,6 @@ struct SpdyFrameBlock { FlagsAndLength flags_length_; }; -// A SETTINGS Control Frame structure. -struct SpdySettingsControlFrameBlock : SpdyFrameBlock { - uint32 num_entries_; - // Variable data here. -}; - #pragma pack(pop) class SpdyFrame; @@ -942,38 +936,6 @@ class SpdyControlFrame : public SpdyFrame { DISALLOW_COPY_AND_ASSIGN(SpdyControlFrame); }; -class SpdySettingsControlFrame : public SpdyControlFrame { - public: - SpdySettingsControlFrame() : SpdyControlFrame(size()) {} - SpdySettingsControlFrame(char* data, bool owns_buffer) - : SpdyControlFrame(data, owns_buffer) {} - - uint32 num_entries() const { - return ntohl(block()->num_entries_); - } - - int header_block_len() const { - return length() - (size() - SpdyFrame::kHeaderSize); - } - - const char* header_block() const { - return reinterpret_cast<const char*>(block()) + size(); - } - - // Returns the size of the SpdySettingsControlFrameBlock structure. - // Note: this is not the size of the SpdySettingsControlFrameBlock class. - static size_t size() { return sizeof(SpdySettingsControlFrameBlock); } - - private: - const struct SpdySettingsControlFrameBlock* block() const { - return static_cast<SpdySettingsControlFrameBlock*>(frame_); - } - struct SpdySettingsControlFrameBlock* mutable_block() { - return static_cast<SpdySettingsControlFrameBlock*>(frame_); - } - DISALLOW_COPY_AND_ASSIGN(SpdySettingsControlFrame); -}; - } // namespace net #endif // NET_SPDY_SPDY_PROTOCOL_H_ diff --git a/net/spdy/spdy_protocol_test.cc b/net/spdy/spdy_protocol_test.cc index c28b0f6..db56d3a 100644 --- a/net/spdy/spdy_protocol_test.cc +++ b/net/spdy/spdy_protocol_test.cc @@ -43,7 +43,6 @@ TEST_P(SpdyProtocolTest, ProtocolConstants) { EXPECT_EQ(8u, SpdyFrame::kHeaderSize); EXPECT_EQ(8u, SpdyDataFrame::size()); EXPECT_EQ(8u, SpdyControlFrame::kHeaderSize); - EXPECT_EQ(12u, SpdySettingsControlFrame::size()); EXPECT_EQ(4u, sizeof(FlagsAndLength)); EXPECT_EQ(1, SYN_STREAM); EXPECT_EQ(2, SYN_REPLY); @@ -120,57 +119,6 @@ TEST_P(SpdyProtocolTest, TestDataFrame) { EXPECT_EQ(length, frame.length()); } -// Test various types of SETTINGS frames. -TEST_P(SpdyProtocolTest, TestSpdySettingsFrame) { - SpdyFramer framer(spdy_version_); - - // Create a settings frame with no settings. - SettingsMap settings; - scoped_ptr<SpdySettingsControlFrame> settings_frame( - framer.CreateSettings(settings)); - EXPECT_EQ(framer.protocol_version(), settings_frame->version()); - EXPECT_TRUE(settings_frame->is_control_frame()); - EXPECT_EQ(SETTINGS, settings_frame->type()); - EXPECT_EQ(0u, settings_frame->num_entries()); - - // We'll add several different ID/Flag combinations and then verify - // that they encode and decode properly. - SettingsFlagsAndId ids[] = { - SettingsFlagsAndId::FromWireFormat(spdy_version_, 0x00000000), - SettingsFlagsAndId::FromWireFormat(spdy_version_, 0x00010203), - SettingsFlagsAndId::FromWireFormat(spdy_version_, 0x01030402), - SettingsFlagsAndId::FromWireFormat(spdy_version_, 0x02030401), - SettingsFlagsAndId(3, 9) - }; - - for (uint32 index = 0; index < arraysize(ids); ++index) { - SettingsFlagsAndId flags_and_id = ids[index]; - SpdySettingsIds id = static_cast<SpdySettingsIds>(flags_and_id.id()); - SpdySettingsFlags flags = - static_cast<SpdySettingsFlags>(flags_and_id.flags()); - settings[id] = SettingsFlagsAndValue(flags, index); - settings_frame.reset(framer.CreateSettings(settings)); - EXPECT_EQ(framer.protocol_version(), settings_frame->version()); - EXPECT_TRUE(settings_frame->is_control_frame()); - EXPECT_EQ(SETTINGS, settings_frame->type()); - EXPECT_EQ(index + 1, settings_frame->num_entries()); - - SettingsMap parsed_settings; - EXPECT_TRUE(framer.ParseSettings(settings_frame.get(), &parsed_settings)); - EXPECT_EQ(settings.size(), parsed_settings.size()); - for (SettingsMap::const_iterator it = parsed_settings.begin(); - it != parsed_settings.end(); - it++) { - SettingsMap::const_iterator it2 = settings.find(it->first); - EXPECT_EQ(it->first, it2->first); - SettingsFlagsAndValue parsed = it->second; - SettingsFlagsAndValue created = it2->second; - EXPECT_EQ(created.first, parsed.first); - EXPECT_EQ(created.second, parsed.second); - } - } -} - TEST_P(SpdyProtocolTest, HasHeaderBlock) { SpdyControlFrame frame(SpdyControlFrame::kHeaderSize); for (SpdyControlType type = SYN_STREAM; diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index 086cfad..f1991ac 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc @@ -1765,7 +1765,7 @@ void SpdySession::SendSettings(const SettingsMap& settings) { // Create the SETTINGS frame and send it. DCHECK(buffered_spdy_framer_.get()); - scoped_ptr<SpdySettingsControlFrame> settings_frame( + scoped_ptr<SpdyFrame> settings_frame( buffered_spdy_framer_->CreateSettings(settings)); sent_settings_ = true; QueueFrame(settings_frame.release(), HIGHEST); diff --git a/net/tools/flip_server/spdy_interface.cc b/net/tools/flip_server/spdy_interface.cc index 18c76e5..dfef135 100644 --- a/net/tools/flip_server/spdy_interface.cc +++ b/net/tools/flip_server/spdy_interface.cc @@ -303,7 +303,7 @@ int SpdySM::PostAcceptHook() { SettingsMap settings; settings[SETTINGS_MAX_CONCURRENT_STREAMS] = SettingsFlagsAndValue(SETTINGS_FLAG_NONE, 100); - SpdySettingsControlFrame* settings_frame = + SpdyFrame* settings_frame = buffered_spdy_framer_->CreateSettings(settings); VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Sending Settings Frame"; |