| Index: net/spdy/hpack_encoder.cc
|
| diff --git a/net/spdy/hpack_encoder.cc b/net/spdy/hpack_encoder.cc
|
| index 469042687718e25f7a23e689e1fb900688123818..c9f6506529d992a8d0d587832195b3eed045e727 100644
|
| --- a/net/spdy/hpack_encoder.cc
|
| +++ b/net/spdy/hpack_encoder.cc
|
| @@ -20,7 +20,7 @@ HpackEncoder::~HpackEncoder() {}
|
| bool HpackEncoder::EncodeHeaderSet(const std::map<string, string>& header_set,
|
| string* output) {
|
| // TOOD(jgraettinger): Do more sophisticated encoding.
|
| - HpackOutputStream output_stream(max_string_literal_size_);
|
| + HpackOutputStream output_stream;
|
| for (std::map<string, string>::const_iterator it = header_set.begin();
|
| it != header_set.end(); ++it) {
|
| // TODO(jgraettinger): HTTP/2 requires strict lowercasing of headers,
|
| @@ -29,20 +29,29 @@ bool HpackEncoder::EncodeHeaderSet(const std::map<string, string>& header_set,
|
| std::vector<StringPiece> crumbs;
|
| CookieToCrumbs(it->second, &crumbs);
|
| for (size_t i = 0; i != crumbs.size(); i++) {
|
| - if (!output_stream.AppendLiteralHeaderNoIndexingWithName(
|
| - it->first, crumbs[i])) {
|
| - return false;
|
| - }
|
| + EmitNonIndexedLiteral(it->first, crumbs[i], &output_stream);
|
| }
|
| - } else if (!output_stream.AppendLiteralHeaderNoIndexingWithName(
|
| - it->first, it->second)) {
|
| - return false;
|
| + } else {
|
| + EmitNonIndexedLiteral(it->first, it->second, &output_stream);
|
| }
|
| }
|
| output_stream.TakeString(output);
|
| return true;
|
| }
|
|
|
| +void HpackEncoder::EmitNonIndexedLiteral(StringPiece name,
|
| + StringPiece value,
|
| + HpackOutputStream* output_stream) {
|
| + output_stream->AppendPrefix(kLiteralNoIndexOpcode);
|
| + output_stream->AppendUint32(0u);
|
| + output_stream->AppendPrefix(kStringLiteralIdentityEncoded);
|
| + output_stream->AppendUint32(name.size());
|
| + output_stream->AppendBytes(name);
|
| + output_stream->AppendPrefix(kStringLiteralIdentityEncoded);
|
| + output_stream->AppendUint32(value.size());
|
| + output_stream->AppendBytes(value);
|
| +}
|
| +
|
| void HpackEncoder::CookieToCrumbs(StringPiece cookie,
|
| std::vector<StringPiece>* out) {
|
| out->clear();
|
|
|