Chromium Code Reviews| Index: net/quic/spdy_utils.cc |
| diff --git a/net/quic/spdy_utils.cc b/net/quic/spdy_utils.cc |
| index 90e65373827dc08b0052c52e8e019117d7f82813..7da8f4e0d4af7cf6ea59f710bef0cc63e6649f63 100644 |
| --- a/net/quic/spdy_utils.cc |
| +++ b/net/quic/spdy_utils.cc |
| @@ -119,26 +119,26 @@ bool SpdyUtils::CopyAndValidateHeaders(const QuicHeaderList& header_list, |
| DVLOG(1) << "Header name must not be empty."; |
| return false; |
| } |
| - |
| if (std::any_of(name.begin(), name.end(), base::IsAsciiUpper<char>)) { |
| DLOG(ERROR) << "Malformed header: Header name " << name |
| << " contains upper-case characters."; |
| return false; |
| } |
| - |
|
Ryan Hamilton
2016/05/24 22:18:46
Can you restore these lines?
dahollings
2016/05/24 22:31:23
Done.
|
| auto iter = headers->find(name); |
| if (iter == headers->end()) { |
| (*headers)[name] = p.second; |
| - } else if (name == "cookie") { |
| - // Obeys section 8.1.2.5 in RFC 7540 for cookie reconstruction. |
| - headers->ReplaceOrAppendHeader( |
| - name, base::StringPrintf("%s; %s", iter->second.as_string().c_str(), |
| - p.second.c_str())); |
| } else { |
| // This header had multiple values, so it must be reconstructed. |
| - string value = base::StringPrintf( |
| - "%s%c%s", iter->second.as_string().c_str(), '\0', p.second.c_str()); |
| - headers->ReplaceOrAppendHeader(name, value); |
| + base::StringPiece v = iter->second; |
| + std::string s(v.data(), v.length()); |
| + if (name == "cookie") { |
| + // Obeys section 8.1.2.5 in RFC 7540 for cookie reconstruction. |
| + s.append("; "); |
| + } else { |
| + base::StringPiece("\0", 1).AppendToString(&s); |
| + } |
| + s.append(p.second); |
| + headers->ReplaceOrAppendHeader(name, s); |
| } |
| } |