Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(562)

Unified Diff: net/spdy/spdy_http_utils.cc

Issue 1357953002: Replace the existing SpdyHeaderBlock typedef with a class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add NET_EXPORT to fix compile error on win_chromium_compile_dbg_ng. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/spdy/spdy_header_block_unittest.cc ('k') | net/spdy/spdy_http_utils_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_http_utils.cc
diff --git a/net/spdy/spdy_http_utils.cc b/net/spdy/spdy_http_utils.cc
index aab758aee599815d0b9d59177782ca41f7d33117..7162d96f3a18bd162829bcb63149beccdfb65172 100644
--- a/net/spdy/spdy_http_utils.cc
+++ b/net/spdy/spdy_http_utils.cc
@@ -28,7 +28,10 @@ void AddSpdyHeader(const std::string& name,
if (headers->find(name) == headers->end()) {
(*headers)[name] = value;
} else {
- (*headers)[name] += '\0' + value;
+ std::string joint_value = (*headers)[name].as_string();
+ joint_value.append(1, '\0');
+ joint_value.append(value);
+ (*headers)[name] = joint_value;
}
}
@@ -48,7 +51,7 @@ bool SpdyHeadersToHttpResponse(const SpdyHeaderBlock& headers,
it = headers.find(status_key);
if (it == headers.end())
return false;
- status = it->second;
+ status = it->second.as_string();
if (protocol_version >= HTTP2) {
version = "HTTP/1.1";
@@ -56,7 +59,7 @@ bool SpdyHeadersToHttpResponse(const SpdyHeaderBlock& headers,
it = headers.find(version_key);
if (it == headers.end())
return false;
- version = it->second;
+ version = it->second.as_string();
}
std::string raw_headers(version);
raw_headers.push_back(' ');
@@ -71,7 +74,7 @@ bool SpdyHeadersToHttpResponse(const SpdyHeaderBlock& headers,
// becomes
// Set-Cookie: foo\0
// Set-Cookie: bar\0
- std::string value = it->second;
+ std::string value = it->second.as_string();
size_t start = 0;
size_t end = 0;
do {
@@ -82,9 +85,9 @@ bool SpdyHeadersToHttpResponse(const SpdyHeaderBlock& headers,
else
tval = value.substr(start);
if (protocol_version >= 3 && it->first[0] == ':')
- raw_headers.append(it->first.substr(1));
+ raw_headers.append(it->first.as_string().substr(1));
else
- raw_headers.append(it->first);
+ raw_headers.append(it->first.as_string());
raw_headers.push_back(':');
raw_headers.append(tval);
raw_headers.push_back('\0');
@@ -102,18 +105,7 @@ void CreateSpdyHeadersFromHttpRequest(const HttpRequestInfo& info,
SpdyMajorVersion protocol_version,
bool direct,
SpdyHeaderBlock* headers) {
-
- HttpRequestHeaders::Iterator it(request_headers);
- while (it.GetNext()) {
- std::string name = base::ToLowerASCII(it.name());
- if (name == "connection" || name == "proxy-connection" ||
- name == "transfer-encoding" || name == "host") {
- continue;
- }
- AddSpdyHeader(name, it.value(), headers);
- }
static const char kHttpProtocolVersion[] = "HTTP/1.1";
-
switch (protocol_version) {
case SPDY2:
// TODO(bnc): Remove this code now that SPDY/2 is deprecated.
@@ -130,8 +122,8 @@ void CreateSpdyHeadersFromHttpRequest(const HttpRequestInfo& info,
break;
case SPDY3:
(*headers)[":version"] = kHttpProtocolVersion;
- (*headers)[":host"] = GetHostAndOptionalPort(info.url);
(*headers)[":method"] = info.method;
+ (*headers)[":host"] = GetHostAndOptionalPort(info.url);
if (info.method == "CONNECT") {
(*headers)[":path"] = GetHostAndPort(info.url);
} else {
@@ -152,6 +144,17 @@ void CreateSpdyHeadersFromHttpRequest(const HttpRequestInfo& info,
default:
NOTREACHED();
}
+
+ HttpRequestHeaders::Iterator it(request_headers);
+ while (it.GetNext()) {
+ std::string name = base::ToLowerASCII(it.name());
+ if (name.empty() || name[0] == ':' || name == "connection" ||
+ name == "proxy-connection" || name == "transfer-encoding" ||
+ name == "host") {
+ continue;
+ }
+ AddSpdyHeader(name, it.value(), headers);
+ }
}
void CreateSpdyHeadersFromHttpResponse(
@@ -205,18 +208,18 @@ GURL GetUrlFromHeaderBlock(const SpdyHeaderBlock& headers,
SpdyHeaderBlock::const_iterator it = headers.find(":scheme");
if (it == headers.end())
return GURL();
- std::string url = it->second;
+ std::string url = it->second.as_string();
url.append("://");
it = headers.find(protocol_version >= HTTP2 ? ":authority" : ":host");
if (it == headers.end())
return GURL();
- url.append(it->second);
+ url.append(it->second.as_string());
it = headers.find(":path");
if (it == headers.end())
return GURL();
- url.append(it->second);
+ url.append(it->second.as_string());
return GURL(url);
}
« no previous file with comments | « net/spdy/spdy_header_block_unittest.cc ('k') | net/spdy/spdy_http_utils_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698