| Index: net/spdy/spdy_framer.cc
|
| diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc
|
| index c0f214cb15d0db883431c22d3e4fc6bc88e25d02..f0efd0447bd5b538d668064d0e9f5bf9d9c46ba4 100644
|
| --- a/net/spdy/spdy_framer.cc
|
| +++ b/net/spdy/spdy_framer.cc
|
| @@ -124,6 +124,7 @@ bool SpdyFramerVisitorInterface::OnRstStreamFrameData(
|
| SpdyFramer::SpdyFramer(SpdyMajorVersion version)
|
| : current_frame_buffer_(new char[kControlFrameBufferSize]),
|
| enable_compression_(true),
|
| + hpack_encoder_(ObtainHpackHuffmanTable()),
|
| hpack_decoder_(ObtainHpackHuffmanTable()),
|
| visitor_(NULL),
|
| debug_visitor_(NULL),
|
| @@ -2163,8 +2164,13 @@ SpdySerializedFrame* SpdyFramer::SerializeSynStream(
|
|
|
| string hpack_encoding;
|
| if (protocol_version() > SPDY3) {
|
| - hpack_encoder_.EncodeHeaderSet(syn_stream.name_value_block(),
|
| - &hpack_encoding);
|
| + if (enable_compression_) {
|
| + hpack_encoder_.EncodeHeaderSet(
|
| + syn_stream.name_value_block(), &hpack_encoding);
|
| + } else {
|
| + hpack_encoder_.EncodeHeaderSetWithoutCompression(
|
| + syn_stream.name_value_block(), &hpack_encoding);
|
| + }
|
| size += hpack_encoding.size();
|
| } else {
|
| size += GetSerializedLength(syn_stream.name_value_block());
|
| @@ -2223,8 +2229,13 @@ SpdySerializedFrame* SpdyFramer::SerializeSynReply(
|
|
|
| string hpack_encoding;
|
| if (protocol_version() > SPDY3) {
|
| - hpack_encoder_.EncodeHeaderSet(syn_reply.name_value_block(),
|
| - &hpack_encoding);
|
| + if (enable_compression_) {
|
| + hpack_encoder_.EncodeHeaderSet(
|
| + syn_reply.name_value_block(), &hpack_encoding);
|
| + } else {
|
| + hpack_encoder_.EncodeHeaderSetWithoutCompression(
|
| + syn_reply.name_value_block(), &hpack_encoding);
|
| + }
|
| size += hpack_encoding.size();
|
| } else {
|
| size += GetSerializedLength(syn_reply.name_value_block());
|
| @@ -2442,7 +2453,13 @@ SpdySerializedFrame* SpdyFramer::SerializeHeaders(
|
|
|
| string hpack_encoding;
|
| if (protocol_version() > SPDY3) {
|
| - hpack_encoder_.EncodeHeaderSet(headers.name_value_block(), &hpack_encoding);
|
| + if (enable_compression_) {
|
| + hpack_encoder_.EncodeHeaderSet(
|
| + headers.name_value_block(), &hpack_encoding);
|
| + } else {
|
| + hpack_encoder_.EncodeHeaderSetWithoutCompression(
|
| + headers.name_value_block(), &hpack_encoding);
|
| + }
|
| size += hpack_encoding.size();
|
| if (size > GetControlFrameBufferMaxSize()) {
|
| size += GetNumberRequiredContinuationFrames(size) *
|
| @@ -2533,8 +2550,13 @@ SpdyFrame* SpdyFramer::SerializePushPromise(
|
|
|
| string hpack_encoding;
|
| if (protocol_version() > SPDY3) {
|
| - hpack_encoder_.EncodeHeaderSet(push_promise.name_value_block(),
|
| - &hpack_encoding);
|
| + if (enable_compression_) {
|
| + hpack_encoder_.EncodeHeaderSet(
|
| + push_promise.name_value_block(), &hpack_encoding);
|
| + } else {
|
| + hpack_encoder_.EncodeHeaderSetWithoutCompression(
|
| + push_promise.name_value_block(), &hpack_encoding);
|
| + }
|
| size += hpack_encoding.size();
|
| if (size > GetControlFrameBufferMaxSize()) {
|
| size += GetNumberRequiredContinuationFrames(size) *
|
| @@ -2588,8 +2610,13 @@ SpdyFrame* SpdyFramer::SerializeContinuation(
|
| // The size of this frame, including variable-length name-value block.
|
| size_t size = GetContinuationMinimumSize();
|
| string hpack_encoding;
|
| - hpack_encoder_.EncodeHeaderSet(continuation.name_value_block(),
|
| - &hpack_encoding);
|
| + if (enable_compression_) {
|
| + hpack_encoder_.EncodeHeaderSet(
|
| + continuation.name_value_block(), &hpack_encoding);
|
| + } else {
|
| + hpack_encoder_.EncodeHeaderSetWithoutCompression(
|
| + continuation.name_value_block(), &hpack_encoding);
|
| + }
|
| size += hpack_encoding.size();
|
|
|
| SpdyFrameBuilder builder(size, protocol_version());
|
|
|