diff options
author | mbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-30 02:16:35 +0000 |
---|---|---|
committer | mbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-30 02:16:35 +0000 |
commit | dae22c5cddc8f1ebdfe77e66ebbf834255f94319 (patch) | |
tree | f949e3011b81a4b1234c90311a074fda63706e9c /net | |
parent | d420c31e107cd932582a4a8add0ce2676e4b52da (diff) | |
download | chromium_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.cc | 1 | ||||
-rw-r--r-- | net/http/http_alternate_protocols.h | 1 | ||||
-rw-r--r-- | net/http/http_network_layer.cc | 2 | ||||
-rw-r--r-- | net/http/http_network_transaction.cc | 24 | ||||
-rw-r--r-- | net/http/http_network_transaction_unittest.cc | 49 | ||||
-rw-r--r-- | net/socket/ssl_client_socket.h | 5 | ||||
-rw-r--r-- | net/socket/ssl_client_socket_pool.cc | 2 | ||||
-rw-r--r-- | net/socket/ssl_client_socket_pool_unittest.cc | 8 | ||||
-rw-r--r-- | net/spdy/spdy_framer_test.cc | 54 | ||||
-rw-r--r-- | net/spdy/spdy_network_transaction_unittest.cc | 12 | ||||
-rw-r--r-- | net/spdy/spdy_protocol.h | 4 |
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; |