summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authormbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-30 02:16:35 +0000
committermbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-30 02:16:35 +0000
commitdae22c5cddc8f1ebdfe77e66ebbf834255f94319 (patch)
treef949e3011b81a4b1234c90311a074fda63706e9c /net
parentd420c31e107cd932582a4a8add0ce2676e4b52da (diff)
downloadchromium_src-dae22c5cddc8f1ebdfe77e66ebbf834255f94319.zip
chromium_src-dae22c5cddc8f1ebdfe77e66ebbf834255f94319.tar.gz
chromium_src-dae22c5cddc8f1ebdfe77e66ebbf834255f94319.tar.bz2
Bump the SPDY protocol version to version 2.
Remove "http1.1" and "spdy" from the NPN advertisement string (the proper values are "http/1.1" and "spdy/2", which were included redundantly). BUG=50550 TEST=existing Review URL: http://codereview.chromium.org/3044034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54258 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/http/http_alternate_protocols.cc1
-rw-r--r--net/http/http_alternate_protocols.h1
-rw-r--r--net/http/http_network_layer.cc2
-rw-r--r--net/http/http_network_transaction.cc24
-rw-r--r--net/http/http_network_transaction_unittest.cc49
-rw-r--r--net/socket/ssl_client_socket.h5
-rw-r--r--net/socket/ssl_client_socket_pool.cc2
-rw-r--r--net/socket/ssl_client_socket_pool_unittest.cc8
-rw-r--r--net/spdy/spdy_framer_test.cc54
-rw-r--r--net/spdy/spdy_network_transaction_unittest.cc12
-rw-r--r--net/spdy/spdy_protocol.h4
11 files changed, 90 insertions, 72 deletions
diff --git a/net/http/http_alternate_protocols.cc b/net/http/http_alternate_protocols.cc
index c3804ac4..fbd1d92 100644
--- a/net/http/http_alternate_protocols.cc
+++ b/net/http/http_alternate_protocols.cc
@@ -12,6 +12,7 @@ namespace net {
const char HttpAlternateProtocols::kHeader[] = "Alternate-Protocol";
const char* const HttpAlternateProtocols::kProtocolStrings[] = {
"npn-spdy/1",
+ "npn-spdy/2",
};
HttpAlternateProtocols::HttpAlternateProtocols() {}
diff --git a/net/http/http_alternate_protocols.h b/net/http/http_alternate_protocols.h
index 72f67ae..22bbac3 100644
--- a/net/http/http_alternate_protocols.h
+++ b/net/http/http_alternate_protocols.h
@@ -23,6 +23,7 @@ class HttpAlternateProtocols {
public:
enum Protocol {
NPN_SPDY_1,
+ NPN_SPDY_2,
NUM_ALTERNATE_PROTOCOLS,
BROKEN, // The alternate protocol is known to be broken.
};
diff --git a/net/http/http_network_layer.cc b/net/http/http_network_layer.cc
index 30feddc..74e364a 100644
--- a/net/http/http_network_layer.cc
+++ b/net/http/http_network_layer.cc
@@ -149,7 +149,7 @@ void HttpNetworkLayer::EnableSpdy(const std::string& mode) {
// it presumedly has a better understanding of which protocol we should
// use, therefore the rest of the ordering here is not important.
static const char kNpnProtosFull[] =
- "\x08http/1.1\x07http1.1\x06spdy/1\x04spdy";
+ "\x08http/1.1\x06spdy/2";
// No spdy specified.
static const char kNpnProtosHttpOnly[] = "\x08http/1.1\x07http1.1";
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
index 5cc3895..a9d557f 100644
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -163,9 +163,14 @@ void ProcessAlternateProtocol(const HttpResponseHeaders& headers,
return;
}
- if (port_protocol_vector[1] !=
- HttpAlternateProtocols::kProtocolStrings[
- HttpAlternateProtocols::NPN_SPDY_1]) {
+ HttpAlternateProtocols::Protocol protocol = HttpAlternateProtocols::BROKEN;
+ for (int i = HttpAlternateProtocols::NPN_SPDY_1;
+ i < HttpAlternateProtocols::NUM_ALTERNATE_PROTOCOLS; ++i) {
+ if (port_protocol_vector[1] == HttpAlternateProtocols::kProtocolStrings[i])
+ protocol = static_cast<HttpAlternateProtocols::Protocol>(i);
+ }
+
+ if (protocol == HttpAlternateProtocols::BROKEN) {
// Currently, we only recognize the npn-spdy protocol.
DLOG(WARNING) << HttpAlternateProtocols::kHeader
<< " header has unrecognized protocol: "
@@ -185,8 +190,7 @@ void ProcessAlternateProtocol(const HttpResponseHeaders& headers,
return;
}
- alternate_protocols->SetAlternateProtocolFor(
- host_port, port, HttpAlternateProtocols::NPN_SPDY_1);
+ alternate_protocols->SetAlternateProtocolFor(host_port, port, protocol);
}
} // namespace
@@ -663,9 +667,11 @@ int HttpNetworkTransaction::DoResolveProxy() {
HttpAlternateProtocols::PortProtocolPair alternate =
alternate_protocols.GetAlternateProtocolFor(endpoint_);
if (alternate.protocol != HttpAlternateProtocols::BROKEN) {
- DCHECK_EQ(HttpAlternateProtocols::NPN_SPDY_1, alternate.protocol);
+ DCHECK_LE(HttpAlternateProtocols::NPN_SPDY_1, alternate.protocol);
+ DCHECK_GT(HttpAlternateProtocols::NUM_ALTERNATE_PROTOCOLS,
+ alternate.protocol);
endpoint_.set_port(alternate.port);
- alternate_protocol_ = HttpAlternateProtocols::NPN_SPDY_1;
+ alternate_protocol_ = alternate.protocol;
alternate_protocol_mode_ = kUsingAlternateProtocol;
url_canon::Replacements<char> replacements;
@@ -726,7 +732,7 @@ int HttpNetworkTransaction::DoInitConnection() {
}
bool want_spdy_over_npn = alternate_protocol_mode_ == kUsingAlternateProtocol
- && alternate_protocol_ == HttpAlternateProtocols::NPN_SPDY_1;
+ && alternate_protocol_ == HttpAlternateProtocols::NPN_SPDY_2;
using_ssl_ = request_->url.SchemeIs("https") ||
(want_spdy_without_npn_ && want_ssl_over_spdy_without_npn_) ||
want_spdy_over_npn;
@@ -876,7 +882,7 @@ int HttpNetworkTransaction::DoInitConnectionComplete(int result) {
std::string proto;
ssl_socket->GetNextProto(&proto);
if (SSLClientSocket::NextProtoFromString(proto) ==
- SSLClientSocket::kProtoSPDY1)
+ SSLClientSocket::kProtoSPDY2)
using_spdy_ = true;
}
if(want_ssl_over_spdy_without_npn_ && want_spdy_without_npn_)
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 09b0029..dcdf13f 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -331,6 +331,14 @@ CaptureGroupNameSSLSocketPool::CaptureGroupNameSocketPool(
//-----------------------------------------------------------------------------
+// This is the expected list of advertised protocols from the browser's NPN
+// list.
+static const char kExpectedNPNString[] = "\x08http/1.1\x06spdy/2";
+
+// This is the expected return from a current server advertising SPDY.
+static const char kAlternateProtocolHttpHeader[] =
+ "Alternate-Protocol: 443:npn-spdy/2\r\n\r\n";
+
TEST_F(HttpNetworkTransactionTest, Basic) {
SessionDependencies session_deps;
scoped_ptr<HttpTransaction> trans(
@@ -4027,7 +4035,7 @@ scoped_refptr<HttpNetworkSession> SetupSessionForGroupNameTests(
session->mutable_alternate_protocols();
alternate_protocols->SetAlternateProtocolFor(
HostPortPair("host.with.alternate", 80), 443,
- HttpAlternateProtocols::NPN_SPDY_1);
+ HttpAlternateProtocols::NPN_SPDY_2);
return session;
}
@@ -4978,7 +4986,7 @@ TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) {
MockRead data_reads[] = {
MockRead("HTTP/1.1 200 OK\r\n"),
- MockRead("Alternate-Protocol: 443:npn-spdy/1\r\n\r\n"),
+ MockRead(kAlternateProtocolHttpHeader),
MockRead("hello world"),
MockRead(false, OK),
};
@@ -5025,7 +5033,7 @@ TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) {
alternate_protocols.GetAlternateProtocolFor(http_host_port_pair);
HttpAlternateProtocols::PortProtocolPair expected_alternate;
expected_alternate.port = 443;
- expected_alternate.protocol = HttpAlternateProtocols::NPN_SPDY_1;
+ expected_alternate.protocol = HttpAlternateProtocols::NPN_SPDY_2;
EXPECT_TRUE(expected_alternate.Equals(alternate));
HttpNetworkTransaction::SetUseAlternateProtocols(false);
@@ -5069,7 +5077,7 @@ TEST_F(HttpNetworkTransactionTest, MarkBrokenAlternateProtocol) {
session->mutable_alternate_protocols();
alternate_protocols->SetAlternateProtocolFor(
http_host_port_pair, 1234 /* port is ignored by MockConnect anyway */,
- HttpAlternateProtocols::NPN_SPDY_1);
+ HttpAlternateProtocols::NPN_SPDY_2);
scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
@@ -5149,8 +5157,7 @@ TEST_F(HttpNetworkTransactionTest, MarkBrokenAlternateProtocol) {
TEST_F(HttpNetworkTransactionTest, FailNpnSpdyAndFallback) {
HttpNetworkTransaction::SetUseAlternateProtocols(true);
- HttpNetworkTransaction::SetNextProtos(
- "\x08http/1.1\x07http1.1\x06spdy/1\x04spdy");
+ HttpNetworkTransaction::SetNextProtos(kExpectedNPNString);
SessionDependencies session_deps;
HttpRequestInfo request;
@@ -5182,7 +5189,7 @@ TEST_F(HttpNetworkTransactionTest, FailNpnSpdyAndFallback) {
session->mutable_alternate_protocols();
alternate_protocols->SetAlternateProtocolFor(
http_host_port_pair, 1234 /* port is ignored */,
- HttpAlternateProtocols::NPN_SPDY_1);
+ HttpAlternateProtocols::NPN_SPDY_2);
scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
@@ -5204,8 +5211,7 @@ TEST_F(HttpNetworkTransactionTest, FailNpnSpdyAndFallback) {
TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForNpnSpdy) {
HttpNetworkTransaction::SetUseAlternateProtocols(true);
- HttpNetworkTransaction::SetNextProtos(
- "\x08http/1.1\x07http1.1\x06spdy/1\x04spdy");
+ HttpNetworkTransaction::SetNextProtos(kExpectedNPNString);
SessionDependencies session_deps;
HttpRequestInfo request;
@@ -5215,7 +5221,7 @@ TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForNpnSpdy) {
MockRead data_reads[] = {
MockRead("HTTP/1.1 200 OK\r\n"),
- MockRead("Alternate-Protocol: 443:npn-spdy/1\r\n\r\n"),
+ MockRead(kAlternateProtocolHttpHeader),
MockRead("hello world"),
MockRead(true, OK),
};
@@ -5226,7 +5232,7 @@ TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForNpnSpdy) {
SSLSocketDataProvider ssl(true, OK);
ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
- ssl.next_proto = "spdy/1";
+ ssl.next_proto = "spdy/2";
ssl.was_npn_negotiated = true;
session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
@@ -5323,8 +5329,7 @@ class CapturingProxyResolver : public ProxyResolver {
TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForTunneledNpnSpdy) {
HttpNetworkTransaction::SetUseAlternateProtocols(true);
- HttpNetworkTransaction::SetNextProtos(
- "\x08http/1.1\x07http1.1\x06spdy/1\x04spdy");
+ HttpNetworkTransaction::SetNextProtos(kExpectedNPNString);
ProxyConfig proxy_config;
proxy_config.set_auto_detect(true);
@@ -5343,7 +5348,7 @@ TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForTunneledNpnSpdy) {
MockRead data_reads[] = {
MockRead("HTTP/1.1 200 OK\r\n"),
- MockRead("Alternate-Protocol: 443:npn-spdy/1\r\n\r\n"),
+ MockRead(kAlternateProtocolHttpHeader),
MockRead("hello world"),
MockRead(true, OK),
};
@@ -5354,7 +5359,7 @@ TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForTunneledNpnSpdy) {
SSLSocketDataProvider ssl(true, OK);
ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
- ssl.next_proto = "spdy/1";
+ ssl.next_proto = "spdy/2";
ssl.was_npn_negotiated = true;
session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
@@ -5431,8 +5436,7 @@ TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForTunneledNpnSpdy) {
TEST_F(HttpNetworkTransactionTest,
UseAlternateProtocolForNpnSpdyWithExistingSpdySession) {
HttpNetworkTransaction::SetUseAlternateProtocols(true);
- HttpNetworkTransaction::SetNextProtos(
- "\x08http/1.1\x07http1.1\x06spdy/1\x04spdy");
+ HttpNetworkTransaction::SetNextProtos(kExpectedNPNString);
SessionDependencies session_deps;
HttpRequestInfo request;
@@ -5442,7 +5446,7 @@ TEST_F(HttpNetworkTransactionTest,
MockRead data_reads[] = {
MockRead("HTTP/1.1 200 OK\r\n"),
- MockRead("Alternate-Protocol: 443:npn-spdy/1\r\n\r\n"),
+ MockRead(kAlternateProtocolHttpHeader),
MockRead("hello world"),
MockRead(true, OK),
};
@@ -5453,7 +5457,7 @@ TEST_F(HttpNetworkTransactionTest,
SSLSocketDataProvider ssl(true, OK);
ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
- ssl.next_proto = "spdy/1";
+ ssl.next_proto = "spdy/2";
ssl.was_npn_negotiated = true;
session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
// Make sure we use ssl for spdy here.
@@ -6176,7 +6180,7 @@ TEST_F(HttpNetworkTransactionTest, NpnWithHttpOverSSL) {
MockRead data_reads[] = {
MockRead("HTTP/1.1 200 OK\r\n"),
- MockRead("Alternate-Protocol: 443:npn-spdy/1\r\n\r\n"),
+ MockRead(kAlternateProtocolHttpHeader),
MockRead("hello world"),
MockRead(false, OK),
};
@@ -6223,8 +6227,7 @@ TEST_F(HttpNetworkTransactionTest, SpdyPostNPNServerHangup) {
// followed by an immediate server closing of the socket.
// Fix crash: http://crbug.com/46369
HttpNetworkTransaction::SetUseAlternateProtocols(true);
- HttpNetworkTransaction::SetNextProtos(
- "\x08http/1.1\x07http1.1\x06spdy/1\x04spdy");
+ HttpNetworkTransaction::SetNextProtos(kExpectedNPNString);
SessionDependencies session_deps;
HttpRequestInfo request;
@@ -6234,7 +6237,7 @@ TEST_F(HttpNetworkTransactionTest, SpdyPostNPNServerHangup) {
SSLSocketDataProvider ssl(true, OK);
ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
- ssl.next_proto = "spdy/1";
+ ssl.next_proto = "spdy/2";
ssl.was_npn_negotiated = true;
session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
diff --git a/net/socket/ssl_client_socket.h b/net/socket/ssl_client_socket.h
index ec41c43..7e5e080 100644
--- a/net/socket/ssl_client_socket.h
+++ b/net/socket/ssl_client_socket.h
@@ -45,6 +45,7 @@ class SSLClientSocket : public ClientSocket {
kProtoUnknown = 0,
kProtoHTTP11 = 1,
kProtoSPDY1 = 2,
+ kProtoSPDY2 = 3,
};
// Gets the SSL connection information of the socket.
@@ -67,8 +68,10 @@ class SSLClientSocket : public ClientSocket {
static NextProto NextProtoFromString(const std::string& proto_string) {
if (proto_string == "http1.1" || proto_string == "http/1.1") {
return kProtoHTTP11;
- } else if (proto_string == "spdy" || proto_string == "spdy/1") {
+ } else if (proto_string == "spdy/1") {
return kProtoSPDY1;
+ } else if (proto_string == "spdy/2") {
+ return kProtoSPDY2;
} else {
return kProtoUnknown;
}
diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc
index f13c1cf..03e2e80 100644
--- a/net/socket/ssl_client_socket_pool.cc
+++ b/net/socket/ssl_client_socket_pool.cc
@@ -288,7 +288,7 @@ int SSLConnectJob::DoSSLConnectComplete(int result) {
if (status == SSLClientSocket::kNextProtoNegotiated) {
ssl_socket_->setWasNpnNegotiated(true);
if (SSLClientSocket::NextProtoFromString(proto) ==
- SSLClientSocket::kProtoSPDY1) {
+ SSLClientSocket::kProtoSPDY2) {
spdy_over_npn_succeeded = true;
}
}
diff --git a/net/socket/ssl_client_socket_pool_unittest.cc b/net/socket/ssl_client_socket_pool_unittest.cc
index d8b6339..efc4795 100644
--- a/net/socket/ssl_client_socket_pool_unittest.cc
+++ b/net/socket/ssl_client_socket_pool_unittest.cc
@@ -297,7 +297,7 @@ TEST_F(SSLClientSocketPoolTest, DirectGotSPDY) {
socket_factory_.AddSocketDataProvider(&data);
SSLSocketDataProvider ssl(true, OK);
ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
- ssl.next_proto = "spdy/1";
+ ssl.next_proto = "spdy/2";
socket_factory_.AddSSLSocketDataProvider(&ssl);
CreatePool(true /* tcp pool */, false, false);
@@ -320,7 +320,7 @@ TEST_F(SSLClientSocketPoolTest, DirectGotSPDY) {
std::string proto;
ssl_socket->GetNextProto(&proto);
EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto),
- SSLClientSocket::kProtoSPDY1);
+ SSLClientSocket::kProtoSPDY2);
}
TEST_F(SSLClientSocketPoolTest, DirectGotBonusSPDY) {
@@ -328,7 +328,7 @@ TEST_F(SSLClientSocketPoolTest, DirectGotBonusSPDY) {
socket_factory_.AddSocketDataProvider(&data);
SSLSocketDataProvider ssl(true, OK);
ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
- ssl.next_proto = "spdy/1";
+ ssl.next_proto = "spdy/2";
socket_factory_.AddSSLSocketDataProvider(&ssl);
CreatePool(true /* tcp pool */, false, false);
@@ -351,7 +351,7 @@ TEST_F(SSLClientSocketPoolTest, DirectGotBonusSPDY) {
std::string proto;
ssl_socket->GetNextProto(&proto);
EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto),
- SSLClientSocket::kProtoSPDY1);
+ SSLClientSocket::kProtoSPDY2);
}
TEST_F(SSLClientSocketPoolTest, SOCKSFail) {
diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc
index 4e976ab..d238062 100644
--- a/net/spdy/spdy_framer_test.cc
+++ b/net/spdy/spdy_framer_test.cc
@@ -438,7 +438,7 @@ TEST_F(SpdyFramerTest, DecompressUncompressedFrame) {
TEST_F(SpdyFramerTest, Basic) {
const unsigned char input[] = {
- 0x80, 0x01, 0x00, 0x01, // SYN Stream #1
+ 0x80, 0x02, 0x00, 0x01, // SYN Stream #1
0x00, 0x00, 0x00, 0x14,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00,
@@ -452,7 +452,7 @@ TEST_F(SpdyFramerTest, Basic) {
0xde, 0xad, 0xbe, 0xef,
0xde, 0xad, 0xbe, 0xef,
- 0x80, 0x01, 0x00, 0x01, // SYN Stream #3
+ 0x80, 0x02, 0x00, 0x01, // SYN Stream #3
0x00, 0x00, 0x00, 0x0c,
0x00, 0x00, 0x00, 0x03,
0x00, 0x00, 0x00, 0x00,
@@ -467,7 +467,7 @@ TEST_F(SpdyFramerTest, Basic) {
0x00, 0x00, 0x00, 0x04,
0xde, 0xad, 0xbe, 0xef,
- 0x80, 0x01, 0x00, 0x03, // RST_STREAM on Stream #1
+ 0x80, 0x02, 0x00, 0x03, // RST_STREAM on Stream #1
0x00, 0x00, 0x00, 0x08,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00,
@@ -475,7 +475,7 @@ TEST_F(SpdyFramerTest, Basic) {
0x00, 0x00, 0x00, 0x03, // DATA on Stream #3
0x00, 0x00, 0x00, 0x00,
- 0x80, 0x01, 0x00, 0x03, // RST_STREAM on Stream #3
+ 0x80, 0x02, 0x00, 0x03, // RST_STREAM on Stream #3
0x00, 0x00, 0x00, 0x08,
0x00, 0x00, 0x00, 0x03,
0x00, 0x00, 0x00, 0x00,
@@ -496,7 +496,7 @@ TEST_F(SpdyFramerTest, Basic) {
// Test that the FIN flag on a data frame signifies EOF.
TEST_F(SpdyFramerTest, FinOnDataFrame) {
const unsigned char input[] = {
- 0x80, 0x01, 0x00, 0x01, // SYN Stream #1
+ 0x80, 0x02, 0x00, 0x01, // SYN Stream #1
0x00, 0x00, 0x00, 0x14,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00,
@@ -504,7 +504,7 @@ TEST_F(SpdyFramerTest, FinOnDataFrame) {
0x00, 0x02, 'h', 'h',
0x00, 0x02, 'v', 'v',
- 0x80, 0x01, 0x00, 0x02, // SYN REPLY Stream #1
+ 0x80, 0x02, 0x00, 0x02, // SYN REPLY Stream #1
0x00, 0x00, 0x00, 0x10,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01,
@@ -537,7 +537,7 @@ TEST_F(SpdyFramerTest, FinOnDataFrame) {
// Test that the FIN flag on a SYN reply frame signifies EOF.
TEST_F(SpdyFramerTest, FinOnSynReplyFrame) {
const unsigned char input[] = {
- 0x80, 0x01, 0x00, 0x01, // SYN Stream #1
+ 0x80, 0x02, 0x00, 0x01, // SYN Stream #1
0x00, 0x00, 0x00, 0x14,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00,
@@ -545,7 +545,7 @@ TEST_F(SpdyFramerTest, FinOnSynReplyFrame) {
0x00, 0x02, 'h', 'h',
0x00, 0x02, 'v', 'v',
- 0x80, 0x01, 0x00, 0x02, // SYN REPLY Stream #1
+ 0x80, 0x02, 0x00, 0x02, // SYN REPLY Stream #1
0x01, 0x00, 0x00, 0x10,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01,
@@ -788,7 +788,7 @@ TEST_F(SpdyFramerTest, CreateSynStreamUncompressed) {
headers["foo"] = "bar";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x01,
+ 0x80, 0x02, 0x00, 0x01,
0x00, 0x00, 0x00, 0x20,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00,
@@ -815,7 +815,7 @@ TEST_F(SpdyFramerTest, CreateSynStreamUncompressed) {
headers["foo"] = "bar";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x01,
+ 0x80, 0x02, 0x00, 0x01,
0x01, 0x00, 0x00, 0x1D,
0x7f, 0xff, 0xff, 0xff,
0x7f, 0xff, 0xff, 0xff,
@@ -842,7 +842,7 @@ TEST_F(SpdyFramerTest, CreateSynStreamUncompressed) {
headers["foo"] = "";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x01,
+ 0x80, 0x02, 0x00, 0x01,
0x01, 0x00, 0x00, 0x1D,
0x7f, 0xff, 0xff, 0xff,
0x7f, 0xff, 0xff, 0xff,
@@ -873,7 +873,7 @@ TEST_F(SpdyFramerTest, CreateSynStreamCompressed) {
headers["foo"] = "bar";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x01,
+ 0x80, 0x02, 0x00, 0x01,
0x00, 0x00, 0x00, 0x25,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00,
@@ -905,7 +905,7 @@ TEST_F(SpdyFramerTest, CreateSynReplyUncompressed) {
headers["foo"] = "bar";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x02,
+ 0x80, 0x02, 0x00, 0x02,
0x00, 0x00, 0x00, 0x1C,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02,
@@ -929,7 +929,7 @@ TEST_F(SpdyFramerTest, CreateSynReplyUncompressed) {
headers["foo"] = "bar";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x02,
+ 0x80, 0x02, 0x00, 0x02,
0x01, 0x00, 0x00, 0x19,
0x7f, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x02,
@@ -953,7 +953,7 @@ TEST_F(SpdyFramerTest, CreateSynReplyUncompressed) {
headers["foo"] = "";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x02,
+ 0x80, 0x02, 0x00, 0x02,
0x01, 0x00, 0x00, 0x19,
0x7f, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x02,
@@ -981,7 +981,7 @@ TEST_F(SpdyFramerTest, CreateSynReplyCompressed) {
headers["foo"] = "bar";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x02,
+ 0x80, 0x02, 0x00, 0x02,
0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x38, 0xea,
@@ -1005,7 +1005,7 @@ TEST_F(SpdyFramerTest, CreateRstStream) {
{
const char kDescription[] = "RST_STREAM frame";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x03,
+ 0x80, 0x02, 0x00, 0x03,
0x00, 0x00, 0x00, 0x08,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01,
@@ -1017,7 +1017,7 @@ TEST_F(SpdyFramerTest, CreateRstStream) {
{
const char kDescription[] = "RST_STREAM frame with max stream ID";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x03,
+ 0x80, 0x02, 0x00, 0x03,
0x00, 0x00, 0x00, 0x08,
0x7f, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x01,
@@ -1030,7 +1030,7 @@ TEST_F(SpdyFramerTest, CreateRstStream) {
{
const char kDescription[] = "RST_STREAM frame with max status code";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x03,
+ 0x80, 0x02, 0x00, 0x03,
0x00, 0x00, 0x00, 0x08,
0x7f, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x06,
@@ -1061,7 +1061,7 @@ TEST_F(SpdyFramerTest, CreateSettings) {
settings.push_back(SpdySetting(0x01000004, 0xffffffff));
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x04,
+ 0x80, 0x02, 0x00, 0x04,
0x00, 0x00, 0x00, 0x44,
0x00, 0x00, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00,
@@ -1091,7 +1091,7 @@ TEST_F(SpdyFramerTest, CreateSettings) {
SpdySettings settings;
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x04,
+ 0x80, 0x02, 0x00, 0x04,
0x00, 0x00, 0x00, 0x04,
0x00, 0x00, 0x00, 0x00,
};
@@ -1106,7 +1106,7 @@ TEST_F(SpdyFramerTest, CreateNopFrame) {
{
const char kDescription[] = "NOOP frame";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x05,
+ 0x80, 0x02, 0x00, 0x05,
0x00, 0x00, 0x00, 0x00,
};
scoped_ptr<SpdyFrame> frame(framer.CreateNopFrame());
@@ -1120,7 +1120,7 @@ TEST_F(SpdyFramerTest, CreateGoAway) {
{
const char kDescription[] = "GOAWAY frame";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x07,
+ 0x80, 0x02, 0x00, 0x07,
0x00, 0x00, 0x00, 0x04,
0x00, 0x00, 0x00, 0x00,
};
@@ -1131,7 +1131,7 @@ TEST_F(SpdyFramerTest, CreateGoAway) {
{
const char kDescription[] = "GOAWAY frame with max stream ID";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x07,
+ 0x80, 0x02, 0x00, 0x07,
0x00, 0x00, 0x00, 0x04,
0x7f, 0xff, 0xff, 0xff,
};
@@ -1146,7 +1146,7 @@ TEST_F(SpdyFramerTest, CreateWindowUpdate) {
{
const char kDescription[] = "WINDOW_UPDATE frame";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x09,
+ 0x80, 0x02, 0x00, 0x09,
0x00, 0x00, 0x00, 0x08,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01,
@@ -1158,7 +1158,7 @@ TEST_F(SpdyFramerTest, CreateWindowUpdate) {
{
const char kDescription[] = "WINDOW_UPDATE frame with max stream ID";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x09,
+ 0x80, 0x02, 0x00, 0x09,
0x00, 0x00, 0x00, 0x08,
0x7f, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x01,
@@ -1170,7 +1170,7 @@ TEST_F(SpdyFramerTest, CreateWindowUpdate) {
{
const char kDescription[] = "WINDOW_UPDATE frame with max window delta";
const unsigned char kFrameData[] = {
- 0x80, 0x01, 0x00, 0x09,
+ 0x80, 0x02, 0x00, 0x09,
0x00, 0x00, 0x00, 0x08,
0x00, 0x00, 0x00, 0x01,
0x7f, 0xff, 0xff, 0xff,
diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc
index 3ac38cb..8da5389 100644
--- a/net/spdy/spdy_network_transaction_unittest.cc
+++ b/net/spdy/spdy_network_transaction_unittest.cc
@@ -12,6 +12,11 @@
//-----------------------------------------------------------------------------
namespace net {
+
+// This is the expected list of advertised protocols from the browser's NPN
+// list.
+static const char kExpectedNPNString[] = "\x08http/1.1\x06spdy/2";
+
enum SpdyNetworkTransactionTestTypes {
SPDYNPN,
SPDYNOSSL,
@@ -76,10 +81,9 @@ class SpdyNetworkTransactionTest
case SPDYNPN:
session_->mutable_alternate_protocols()->SetAlternateProtocolFor(
HostPortPair("www.google.com", 80), 443,
- HttpAlternateProtocols::NPN_SPDY_1);
+ HttpAlternateProtocols::NPN_SPDY_2);
HttpNetworkTransaction::SetUseAlternateProtocols(true);
- HttpNetworkTransaction::SetNextProtos(
- "\x08http/1.1\x07http1.1\x06spdy/1\x04spdy");
+ HttpNetworkTransaction::SetNextProtos(kExpectedNPNString);
break;
case SPDYNOSSL:
HttpNetworkTransaction::SetUseSSLOverSpdyWithoutNPN(false);
@@ -181,7 +185,7 @@ class SpdyNetworkTransactionTest
new SSLSocketDataProvider(true, OK));
if(test_type_ == SPDYNPN) {
ssl_->next_proto_status = SSLClientSocket::kNextProtoNegotiated;
- ssl_->next_proto = "spdy/1";
+ ssl_->next_proto = "spdy/2";
ssl_->was_npn_negotiated = true;
}
ssl_vector_.push_back(ssl_);
diff --git a/net/spdy/spdy_protocol.h b/net/spdy/spdy_protocol.h
index 6b41e53..4637b5f 100644
--- a/net/spdy/spdy_protocol.h
+++ b/net/spdy/spdy_protocol.h
@@ -119,8 +119,8 @@
namespace spdy {
-// This implementation of Spdy is version 1.
-const int kSpdyProtocolVersion = 1;
+// The SPDY version of this implementation.
+const int kSpdyProtocolVersion = 2;
// Default initial window size.
const int kInitialWindowSize = 64 * 1024;