Index: net/socket/ssl_client_socket_openssl.cc |
diff --git a/net/socket/ssl_client_socket_openssl.cc b/net/socket/ssl_client_socket_openssl.cc |
index 4e86c055932ed7517600625db0179d13ee720029..6433b2311c8e4a6000ac4647708447243931f652 100644 |
--- a/net/socket/ssl_client_socket_openssl.cc |
+++ b/net/socket/ssl_client_socket_openssl.cc |
@@ -1782,11 +1782,10 @@ int SSLClientSocketOpenSSL::SelectNextProtoCallback(unsigned char** out, |
// For each protocol in server preference order, see if we support it. |
for (unsigned int i = 0; i < inlen; i += in[i] + 1) { |
- for (std::vector<std::string>::const_iterator |
- j = ssl_config_.next_protos.begin(); |
- j != ssl_config_.next_protos.end(); ++j) { |
- if (in[i] == j->size() && |
- memcmp(&in[i + 1], j->data(), in[i]) == 0) { |
+ for (NextProto next_proto : ssl_config_.next_protos) { |
+ const std::string proto = NextProtoToString(next_proto); |
+ if (in[i] == proto.size() && |
+ memcmp(&in[i + 1], proto.data(), in[i]) == 0) { |
// We found a match. |
*out = const_cast<unsigned char*>(in) + i + 1; |
*outlen = in[i]; |
@@ -1800,9 +1799,9 @@ int SSLClientSocketOpenSSL::SelectNextProtoCallback(unsigned char** out, |
// If we didn't find a protocol, we select the first one from our list. |
if (npn_status_ == kNextProtoNoOverlap) { |
- *out = reinterpret_cast<uint8*>(const_cast<char*>( |
- ssl_config_.next_protos[0].data())); |
- *outlen = ssl_config_.next_protos[0].size(); |
+ const std::string proto = NextProtoToString(ssl_config_.next_protos[0]); |
+ *out = reinterpret_cast<uint8*>(const_cast<char*>(proto.data())); |
+ *outlen = proto.size(); |
} |
npn_proto_.assign(reinterpret_cast<const char*>(*out), *outlen); |