| Index: net/spdy/spdy_test_util_spdy3.cc
|
| diff --git a/net/spdy/spdy_test_util_spdy3.cc b/net/spdy/spdy_test_util_spdy3.cc
|
| index e5aaabfc711d29911695d7fe6ccd124d297062c4..56461668d564af962d29bdca3692eca34f378b0f 100644
|
| --- a/net/spdy/spdy_test_util_spdy3.cc
|
| +++ b/net/spdy/spdy_test_util_spdy3.cc
|
| @@ -471,13 +471,10 @@ SpdyFrame* ConstructSpdyPush(const char* const extra_headers[],
|
| int extra_header_count,
|
| int stream_id,
|
| int associated_stream_id) {
|
| - const char* const kStandardGetHeaders[] = {
|
| - "hello",
|
| - "bye",
|
| - "status",
|
| - "200",
|
| - "version",
|
| - "HTTP/1.1"
|
| + const char* const kStandardPushHeaders[] = {
|
| + "hello", "bye",
|
| + ":status", "200",
|
| + ":version", "HTTP/1.1"
|
| };
|
| return ConstructSpdyControlFrame(extra_headers,
|
| extra_header_count,
|
| @@ -486,8 +483,8 @@ SpdyFrame* ConstructSpdyPush(const char* const extra_headers[],
|
| LOWEST,
|
| SYN_STREAM,
|
| CONTROL_FLAG_NONE,
|
| - kStandardGetHeaders,
|
| - arraysize(kStandardGetHeaders),
|
| + kStandardPushHeaders,
|
| + arraysize(kStandardPushHeaders),
|
| associated_stream_id);
|
| }
|
|
|
| @@ -496,15 +493,38 @@ SpdyFrame* ConstructSpdyPush(const char* const extra_headers[],
|
| int stream_id,
|
| int associated_stream_id,
|
| const char* url) {
|
| - const char* const kStandardGetHeaders[] = {
|
| + GURL gurl(url);
|
| +
|
| + std::string str_path = gurl.PathForRequest();
|
| + std::string str_scheme = gurl.scheme();
|
| + std::string str_host = gurl.host();
|
| + if (gurl.has_port()) {
|
| + str_host += ":";
|
| + str_host += gurl.port();
|
| + }
|
| + scoped_array<char> req(new char[str_path.size() + 1]);
|
| + scoped_array<char> scheme(new char[str_scheme.size() + 1]);
|
| + scoped_array<char> host(new char[str_host.size() + 1]);
|
| + memcpy(req.get(), str_path.c_str(), str_path.size());
|
| + memcpy(scheme.get(), str_scheme.c_str(), str_scheme.size());
|
| + memcpy(host.get(), str_host.c_str(), str_host.size());
|
| + req.get()[str_path.size()] = '\0';
|
| + scheme.get()[str_scheme.size()] = '\0';
|
| + host.get()[str_host.size()] = '\0';
|
| +
|
| + const char* const headers[] = {
|
| "hello",
|
| "bye",
|
| - "status",
|
| + ":status",
|
| "200 OK",
|
| - "url",
|
| - url,
|
| - "version",
|
| - "HTTP/1.1"
|
| + ":version",
|
| + "HTTP/1.1",
|
| + ":path",
|
| + req.get(),
|
| + ":host",
|
| + host.get(),
|
| + ":scheme",
|
| + scheme.get(),
|
| };
|
| return ConstructSpdyControlFrame(extra_headers,
|
| extra_header_count,
|
| @@ -513,8 +533,8 @@ SpdyFrame* ConstructSpdyPush(const char* const extra_headers[],
|
| LOWEST,
|
| SYN_STREAM,
|
| CONTROL_FLAG_NONE,
|
| - kStandardGetHeaders,
|
| - arraysize(kStandardGetHeaders),
|
| + headers,
|
| + arraysize(headers),
|
| associated_stream_id);
|
|
|
| }
|
| @@ -525,16 +545,39 @@ SpdyFrame* ConstructSpdyPush(const char* const extra_headers[],
|
| const char* url,
|
| const char* status,
|
| const char* location) {
|
| + GURL gurl(url);
|
| +
|
| + std::string str_path = gurl.PathForRequest();
|
| + std::string str_scheme = gurl.scheme();
|
| + std::string str_host = gurl.host();
|
| + if (gurl.has_port()) {
|
| + str_host += ":";
|
| + str_host += gurl.port();
|
| + }
|
| + scoped_array<char> req(new char[str_path.size() + 1]);
|
| + scoped_array<char> scheme(new char[str_scheme.size() + 1]);
|
| + scoped_array<char> host(new char[str_host.size() + 1]);
|
| + memcpy(req.get(), str_path.c_str(), str_path.size());
|
| + memcpy(scheme.get(), str_scheme.c_str(), str_scheme.size());
|
| + memcpy(host.get(), str_host.c_str(), str_host.size());
|
| + req.get()[str_path.size()] = '\0';
|
| + scheme.get()[str_scheme.size()] = '\0';
|
| + host.get()[str_host.size()] = '\0';
|
| +
|
| const char* const kStandardGetHeaders[] = {
|
| "hello",
|
| "bye",
|
| - "status",
|
| + ":status",
|
| status,
|
| "location",
|
| location,
|
| - "url",
|
| - url,
|
| - "version",
|
| + ":path",
|
| + req.get(),
|
| + ":host",
|
| + host.get(),
|
| + ":scheme",
|
| + scheme.get(),
|
| + ":version",
|
| "HTTP/1.1"
|
| };
|
| return ConstructSpdyControlFrame(extra_headers,
|
| @@ -550,11 +593,33 @@ SpdyFrame* ConstructSpdyPush(const char* const extra_headers[],
|
| }
|
|
|
| SpdyFrame* ConstructSpdyPush(int stream_id,
|
| - int associated_stream_id,
|
| - const char* url) {
|
| - const char* const kStandardGetHeaders[] = {
|
| - "url",
|
| - url
|
| + int associated_stream_id,
|
| + const char* url) {
|
| + GURL gurl(url);
|
| +
|
| + std::string str_path = gurl.PathForRequest();
|
| + std::string str_scheme = gurl.scheme();
|
| + std::string str_host = gurl.host();
|
| + if (gurl.has_port()) {
|
| + str_host += ":";
|
| + str_host += gurl.port();
|
| + }
|
| + scoped_array<char> req(new char[str_path.size() + 1]);
|
| + scoped_array<char> scheme(new char[str_scheme.size() + 1]);
|
| + scoped_array<char> host(new char[str_host.size() + 1]);
|
| + memcpy(req.get(), str_path.c_str(), str_path.size());
|
| + memcpy(scheme.get(), str_scheme.c_str(), str_scheme.size());
|
| + memcpy(host.get(), str_host.c_str(), str_host.size());
|
| + req.get()[str_path.size()] = '\0';
|
| + scheme.get()[str_scheme.size()] = '\0';
|
| + host.get()[str_host.size()] = '\0';
|
| +
|
| + const char* const headers[] = {
|
| + req.get(),
|
| + ":host",
|
| + host.get(),
|
| + ":scheme",
|
| + scheme.get(),
|
| };
|
| return ConstructSpdyControlFrame(0,
|
| 0,
|
| @@ -563,18 +628,18 @@ SpdyFrame* ConstructSpdyPush(int stream_id,
|
| LOWEST,
|
| SYN_STREAM,
|
| CONTROL_FLAG_NONE,
|
| - kStandardGetHeaders,
|
| - arraysize(kStandardGetHeaders),
|
| + headers,
|
| + arraysize(headers),
|
| associated_stream_id);
|
| }
|
|
|
| SpdyFrame* ConstructSpdyPushHeaders(int stream_id,
|
| - const char* const extra_headers[],
|
| - int extra_header_count) {
|
| + const char* const extra_headers[],
|
| + int extra_header_count) {
|
| const char* const kStandardGetHeaders[] = {
|
| - "status",
|
| + ":status",
|
| "200 OK",
|
| - "version",
|
| + ":version",
|
| "HTTP/1.1"
|
| };
|
| return ConstructSpdyControlFrame(extra_headers,
|
| @@ -598,9 +663,9 @@ SpdyFrame* ConstructSpdySynReplyError(
|
| const char* const kStandardGetHeaders[] = {
|
| "hello",
|
| "bye",
|
| - "status",
|
| + ":status",
|
| status,
|
| - "version",
|
| + ":version",
|
| "HTTP/1.1"
|
| };
|
| return ConstructSpdyControlFrame(extra_headers,
|
| @@ -647,9 +712,9 @@ SpdyFrame* ConstructSpdyGetSynReply(const char* const extra_headers[],
|
| static const char* const kStandardGetHeaders[] = {
|
| "hello",
|
| "bye",
|
| - "status",
|
| + ":status",
|
| "200",
|
| - "version",
|
| + ":version",
|
| "HTTP/1.1"
|
| };
|
| return ConstructSpdyControlFrame(extra_headers,
|
| @@ -735,11 +800,11 @@ SpdyFrame* ConstructSpdyPostSynReply(const char* const extra_headers[],
|
| static const char* const kStandardGetHeaders[] = {
|
| "hello",
|
| "bye",
|
| - "status",
|
| + ":status",
|
| "200",
|
| "url",
|
| "/index.php",
|
| - "version",
|
| + ":version",
|
| "HTTP/1.1"
|
| };
|
| return ConstructSpdyControlFrame(extra_headers,
|
| @@ -802,8 +867,10 @@ int ConstructSpdyReplyString(const char* const extra_headers[],
|
| // Write the header.
|
| int value_len, current_len, offset;
|
| const char* header_string = next->first.c_str();
|
| + if (header_string && header_string[0] == ':')
|
| + header_string++;
|
| packet_size += AppendToBuffer(header_string,
|
| - next->first.length(),
|
| + strlen(header_string),
|
| &buffer_write,
|
| &buffer_left);
|
| packet_size += AppendToBuffer(": ",
|
|
|