summaryrefslogtreecommitdiffstats
path: root/net/socket
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-05 20:46:01 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-05 20:46:01 +0000
commit63bf966c829d04878c3012cd221a27f1ea44b7d8 (patch)
tree630e51035533a1592dc02bf6fb9ae66c16b00019 /net/socket
parent736441a7a4e0dde8240d5eeca984351fb0100501 (diff)
downloadchromium_src-63bf966c829d04878c3012cd221a27f1ea44b7d8.zip
chromium_src-63bf966c829d04878c3012cd221a27f1ea44b7d8.tar.gz
chromium_src-63bf966c829d04878c3012cd221a27f1ea44b7d8.tar.bz2
[SPDY] Add flag to turn on SPDY/3.1 (with per-session flow control)
Add SPDY/3.1 info for NPN and Alternate-Protocol. BUG=176592 TBR=jam@chromium.org Review URL: https://codereview.chromium.org/12388099 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@186250 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket')
-rw-r--r--net/socket/next_proto.h4
-rw-r--r--net/socket/ssl_client_socket.cc4
-rw-r--r--net/socket/ssl_client_socket_pool.cc11
3 files changed, 13 insertions, 6 deletions
diff --git a/net/socket/next_proto.h b/net/socket/next_proto.h
index a60437f..7ba3e57 100644
--- a/net/socket/next_proto.h
+++ b/net/socket/next_proto.h
@@ -14,11 +14,15 @@ namespace net {
enum NextProto {
kProtoUnknown = 0,
kProtoHTTP11 = 1,
+
kProtoSPDY1 = 2,
+ kProtoSPDYMinimumVersion = kProtoSPDY1,
kProtoSPDY2 = 3,
kProtoSPDY21 = 4,
kProtoSPDY3 = 5,
kProtoSPDY31 = 6,
+ kProtoSPDYMaximumVersion = kProtoSPDY31,
+
kProtoMaximumVersion = 7,
};
diff --git a/net/socket/ssl_client_socket.cc b/net/socket/ssl_client_socket.cc
index 7f23258..478ef18 100644
--- a/net/socket/ssl_client_socket.cc
+++ b/net/socket/ssl_client_socket.cc
@@ -26,6 +26,8 @@ NextProto SSLClientSocket::NextProtoFromString(
return kProtoSPDY2;
} else if (proto_string == "spdy/3") {
return kProtoSPDY3;
+ } else if (proto_string == "spdy/3.1") {
+ return kProtoSPDY31;
} else {
return kProtoUnknown;
}
@@ -42,6 +44,8 @@ const char* SSLClientSocket::NextProtoToString(NextProto next_proto) {
return "spdy/2";
case kProtoSPDY3:
return "spdy/3";
+ case kProtoSPDY31:
+ return "spdy/3.1";
default:
break;
}
diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc
index 826ccc8..64ebf28 100644
--- a/net/socket/ssl_client_socket_pool.cc
+++ b/net/socket/ssl_client_socket_pool.cc
@@ -301,12 +301,11 @@ int SSLConnectJob::DoSSLConnectComplete(int result) {
NextProto protocol_negotiated =
SSLClientSocket::NextProtoFromString(proto);
ssl_socket_->set_protocol_negotiated(protocol_negotiated);
- // If we negotiated either version of SPDY, we must have
- // advertised it, so allow it.
- // TODO(mbelshe): verify it was a protocol we advertised?
- if (protocol_negotiated == kProtoSPDY1 ||
- protocol_negotiated == kProtoSPDY2 ||
- protocol_negotiated == kProtoSPDY3) {
+ // If we negotiated a SPDY version, it must have been present in
+ // SSLConfig::next_protos.
+ // TODO(mbelshe): Verify this.
+ if (protocol_negotiated >= kProtoSPDYMinimumVersion &&
+ protocol_negotiated <= kProtoSPDYMaximumVersion) {
ssl_socket_->set_was_spdy_negotiated(true);
}
}