| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/socket/ssl_client_socket.h" | 5 #include "net/socket/ssl_client_socket.h" |
| 6 | 6 |
| 7 #include "net/base/address_list.h" | 7 #include "net/base/address_list.h" |
| 8 #include "net/base/host_port_pair.h" |
| 8 #include "net/base/host_resolver.h" | 9 #include "net/base/host_resolver.h" |
| 9 #include "net/base/io_buffer.h" | 10 #include "net/base/io_buffer.h" |
| 10 #include "net/base/net_log.h" | 11 #include "net/base/net_log.h" |
| 11 #include "net/base/net_log_unittest.h" | 12 #include "net/base/net_log_unittest.h" |
| 12 #include "net/base/net_errors.h" | 13 #include "net/base/net_errors.h" |
| 13 #include "net/base/ssl_config_service.h" | 14 #include "net/base/ssl_config_service.h" |
| 14 #include "net/base/test_completion_callback.h" | 15 #include "net/base/test_completion_callback.h" |
| 15 #include "net/socket/client_socket_factory.h" | 16 #include "net/socket/client_socket_factory.h" |
| 16 #include "net/socket/socket_test_util.h" | 17 #include "net/socket/socket_test_util.h" |
| 17 #include "net/socket/tcp_client_socket.h" | 18 #include "net/socket/tcp_client_socket.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 | 78 |
| 78 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 79 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
| 79 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log); | 80 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log); |
| 80 rv = transport->Connect(&callback); | 81 rv = transport->Connect(&callback); |
| 81 if (rv == net::ERR_IO_PENDING) | 82 if (rv == net::ERR_IO_PENDING) |
| 82 rv = callback.WaitForResult(); | 83 rv = callback.WaitForResult(); |
| 83 EXPECT_EQ(net::OK, rv); | 84 EXPECT_EQ(net::OK, rv); |
| 84 | 85 |
| 85 scoped_ptr<net::SSLClientSocket> sock( | 86 scoped_ptr<net::SSLClientSocket> sock( |
| 86 socket_factory_->CreateSSLClientSocket(transport, | 87 socket_factory_->CreateSSLClientSocket(transport, |
| 87 server_.kHostName, kDefaultSSLConfig)); | 88 net::HostPortPair(server_.kHostName, server_.kOKHTTPSPort), |
| 89 kDefaultSSLConfig)); |
| 88 | 90 |
| 89 EXPECT_FALSE(sock->IsConnected()); | 91 EXPECT_FALSE(sock->IsConnected()); |
| 90 | 92 |
| 91 rv = sock->Connect(&callback); | 93 rv = sock->Connect(&callback); |
| 92 EXPECT_TRUE(net::LogContainsBeginEvent( | 94 EXPECT_TRUE(net::LogContainsBeginEvent( |
| 93 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); | 95 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); |
| 94 if (rv != net::OK) { | 96 if (rv != net::OK) { |
| 95 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 97 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
| 96 EXPECT_FALSE(sock->IsConnected()); | 98 EXPECT_FALSE(sock->IsConnected()); |
| 97 EXPECT_FALSE(net::LogContainsEndEvent( | 99 EXPECT_FALSE(net::LogContainsEndEvent( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 121 | 123 |
| 122 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 124 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
| 123 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log); | 125 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log); |
| 124 rv = transport->Connect(&callback); | 126 rv = transport->Connect(&callback); |
| 125 if (rv == net::ERR_IO_PENDING) | 127 if (rv == net::ERR_IO_PENDING) |
| 126 rv = callback.WaitForResult(); | 128 rv = callback.WaitForResult(); |
| 127 EXPECT_EQ(net::OK, rv); | 129 EXPECT_EQ(net::OK, rv); |
| 128 | 130 |
| 129 scoped_ptr<net::SSLClientSocket> sock( | 131 scoped_ptr<net::SSLClientSocket> sock( |
| 130 socket_factory_->CreateSSLClientSocket(transport, | 132 socket_factory_->CreateSSLClientSocket(transport, |
| 131 server_.kHostName, kDefaultSSLConfig)); | 133 net::HostPortPair(server_.kHostName, server_.kBadHTTPSPort), |
| 134 kDefaultSSLConfig)); |
| 132 | 135 |
| 133 EXPECT_FALSE(sock->IsConnected()); | 136 EXPECT_FALSE(sock->IsConnected()); |
| 134 | 137 |
| 135 rv = sock->Connect(&callback); | 138 rv = sock->Connect(&callback); |
| 136 EXPECT_TRUE(net::LogContainsBeginEvent( | 139 EXPECT_TRUE(net::LogContainsBeginEvent( |
| 137 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); | 140 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); |
| 138 if (rv != net::OK) { | 141 if (rv != net::OK) { |
| 139 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 142 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
| 140 EXPECT_FALSE(sock->IsConnected()); | 143 EXPECT_FALSE(sock->IsConnected()); |
| 141 EXPECT_FALSE(net::LogContainsEndEvent( | 144 EXPECT_FALSE(net::LogContainsEndEvent( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 166 | 169 |
| 167 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 170 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
| 168 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log); | 171 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log); |
| 169 rv = transport->Connect(&callback); | 172 rv = transport->Connect(&callback); |
| 170 if (rv == net::ERR_IO_PENDING) | 173 if (rv == net::ERR_IO_PENDING) |
| 171 rv = callback.WaitForResult(); | 174 rv = callback.WaitForResult(); |
| 172 EXPECT_EQ(net::OK, rv); | 175 EXPECT_EQ(net::OK, rv); |
| 173 | 176 |
| 174 scoped_ptr<net::SSLClientSocket> sock( | 177 scoped_ptr<net::SSLClientSocket> sock( |
| 175 socket_factory_->CreateSSLClientSocket(transport, | 178 socket_factory_->CreateSSLClientSocket(transport, |
| 176 server_.kMismatchedHostName, kDefaultSSLConfig)); | 179 net::HostPortPair(server_.kMismatchedHostName, server_.kOKHTTPSPort), |
| 180 kDefaultSSLConfig)); |
| 177 | 181 |
| 178 EXPECT_FALSE(sock->IsConnected()); | 182 EXPECT_FALSE(sock->IsConnected()); |
| 179 | 183 |
| 180 rv = sock->Connect(&callback); | 184 rv = sock->Connect(&callback); |
| 181 | 185 |
| 182 EXPECT_TRUE(net::LogContainsBeginEvent( | 186 EXPECT_TRUE(net::LogContainsBeginEvent( |
| 183 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); | 187 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); |
| 184 if (rv != net::ERR_CERT_COMMON_NAME_INVALID) { | 188 if (rv != net::ERR_CERT_COMMON_NAME_INVALID) { |
| 185 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 189 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
| 186 EXPECT_FALSE(sock->IsConnected()); | 190 EXPECT_FALSE(sock->IsConnected()); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 212 | 216 |
| 213 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 217 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
| 214 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log); | 218 net::ClientSocket* transport = new net::TCPClientSocket(addr, &log); |
| 215 rv = transport->Connect(&callback); | 219 rv = transport->Connect(&callback); |
| 216 if (rv == net::ERR_IO_PENDING) | 220 if (rv == net::ERR_IO_PENDING) |
| 217 rv = callback.WaitForResult(); | 221 rv = callback.WaitForResult(); |
| 218 EXPECT_EQ(net::OK, rv); | 222 EXPECT_EQ(net::OK, rv); |
| 219 | 223 |
| 220 scoped_ptr<net::SSLClientSocket> sock( | 224 scoped_ptr<net::SSLClientSocket> sock( |
| 221 socket_factory_->CreateSSLClientSocket(transport, | 225 socket_factory_->CreateSSLClientSocket(transport, |
| 222 server_.kHostName, kDefaultSSLConfig)); | 226 net::HostPortPair(server_.kHostName, server_.kOKHTTPSPort), |
| 227 kDefaultSSLConfig)); |
| 223 | 228 |
| 224 EXPECT_FALSE(sock->IsConnected()); | 229 EXPECT_FALSE(sock->IsConnected()); |
| 225 | 230 |
| 226 rv = sock->Connect(&callback); | 231 rv = sock->Connect(&callback); |
| 227 EXPECT_TRUE(net::LogContainsBeginEvent( | 232 EXPECT_TRUE(net::LogContainsBeginEvent( |
| 228 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); | 233 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); |
| 229 if (rv != net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { | 234 if (rv != net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { |
| 230 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 235 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
| 231 EXPECT_FALSE(sock->IsConnected()); | 236 EXPECT_FALSE(sock->IsConnected()); |
| 232 EXPECT_FALSE(net::LogContainsEndEvent( | 237 EXPECT_FALSE(net::LogContainsEndEvent( |
| (...skipping 30 matching lines...) Expand all Loading... |
| 263 EXPECT_EQ(net::OK, rv); | 268 EXPECT_EQ(net::OK, rv); |
| 264 | 269 |
| 265 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL); | 270 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL); |
| 266 rv = transport->Connect(&callback); | 271 rv = transport->Connect(&callback); |
| 267 if (rv == net::ERR_IO_PENDING) | 272 if (rv == net::ERR_IO_PENDING) |
| 268 rv = callback.WaitForResult(); | 273 rv = callback.WaitForResult(); |
| 269 EXPECT_EQ(net::OK, rv); | 274 EXPECT_EQ(net::OK, rv); |
| 270 | 275 |
| 271 scoped_ptr<net::SSLClientSocket> sock( | 276 scoped_ptr<net::SSLClientSocket> sock( |
| 272 socket_factory_->CreateSSLClientSocket(transport, | 277 socket_factory_->CreateSSLClientSocket(transport, |
| 273 server_.kHostName, | 278 net::HostPortPair(server_.kHostName, server_.kOKHTTPSPort), |
| 274 kDefaultSSLConfig)); | 279 kDefaultSSLConfig)); |
| 275 | 280 |
| 276 rv = sock->Connect(&callback); | 281 rv = sock->Connect(&callback); |
| 277 if (rv != net::OK) { | 282 if (rv != net::OK) { |
| 278 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 283 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
| 279 | 284 |
| 280 rv = callback.WaitForResult(); | 285 rv = callback.WaitForResult(); |
| 281 EXPECT_EQ(net::OK, rv); | 286 EXPECT_EQ(net::OK, rv); |
| 282 } | 287 } |
| 283 EXPECT_TRUE(sock->IsConnected()); | 288 EXPECT_TRUE(sock->IsConnected()); |
| 284 | 289 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 EXPECT_EQ(net::OK, rv); | 330 EXPECT_EQ(net::OK, rv); |
| 326 | 331 |
| 327 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL); | 332 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL); |
| 328 rv = transport->Connect(&callback); | 333 rv = transport->Connect(&callback); |
| 329 if (rv == net::ERR_IO_PENDING) | 334 if (rv == net::ERR_IO_PENDING) |
| 330 rv = callback.WaitForResult(); | 335 rv = callback.WaitForResult(); |
| 331 EXPECT_EQ(net::OK, rv); | 336 EXPECT_EQ(net::OK, rv); |
| 332 | 337 |
| 333 scoped_ptr<net::SSLClientSocket> sock( | 338 scoped_ptr<net::SSLClientSocket> sock( |
| 334 socket_factory_->CreateSSLClientSocket(transport, | 339 socket_factory_->CreateSSLClientSocket(transport, |
| 335 server_.kHostName, | 340 net::HostPortPair(server_.kHostName, server_.kOKHTTPSPort), |
| 336 kDefaultSSLConfig)); | 341 kDefaultSSLConfig)); |
| 337 | 342 |
| 338 rv = sock->Connect(&callback); | 343 rv = sock->Connect(&callback); |
| 339 if (rv != net::OK) { | 344 if (rv != net::OK) { |
| 340 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 345 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
| 341 | 346 |
| 342 rv = callback.WaitForResult(); | 347 rv = callback.WaitForResult(); |
| 343 EXPECT_EQ(net::OK, rv); | 348 EXPECT_EQ(net::OK, rv); |
| 344 } | 349 } |
| 345 EXPECT_TRUE(sock->IsConnected()); | 350 EXPECT_TRUE(sock->IsConnected()); |
| 346 | 351 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 EXPECT_EQ(net::OK, rv); | 389 EXPECT_EQ(net::OK, rv); |
| 385 | 390 |
| 386 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL); | 391 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL); |
| 387 rv = transport->Connect(&callback); | 392 rv = transport->Connect(&callback); |
| 388 if (rv == net::ERR_IO_PENDING) | 393 if (rv == net::ERR_IO_PENDING) |
| 389 rv = callback.WaitForResult(); | 394 rv = callback.WaitForResult(); |
| 390 EXPECT_EQ(net::OK, rv); | 395 EXPECT_EQ(net::OK, rv); |
| 391 | 396 |
| 392 scoped_ptr<net::SSLClientSocket> sock( | 397 scoped_ptr<net::SSLClientSocket> sock( |
| 393 socket_factory_->CreateSSLClientSocket(transport, | 398 socket_factory_->CreateSSLClientSocket(transport, |
| 394 server_.kHostName, kDefaultSSLConfig)); | 399 net::HostPortPair(server_.kHostName, server_.kOKHTTPSPort), |
| 400 kDefaultSSLConfig)); |
| 395 | 401 |
| 396 rv = sock->Connect(&callback); | 402 rv = sock->Connect(&callback); |
| 397 if (rv != net::OK) { | 403 if (rv != net::OK) { |
| 398 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 404 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
| 399 | 405 |
| 400 rv = callback.WaitForResult(); | 406 rv = callback.WaitForResult(); |
| 401 EXPECT_EQ(net::OK, rv); | 407 EXPECT_EQ(net::OK, rv); |
| 402 } | 408 } |
| 403 | 409 |
| 404 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 410 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 EXPECT_EQ(net::OK, rv); | 444 EXPECT_EQ(net::OK, rv); |
| 439 | 445 |
| 440 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL); | 446 net::ClientSocket* transport = new net::TCPClientSocket(addr, NULL); |
| 441 rv = transport->Connect(&callback); | 447 rv = transport->Connect(&callback); |
| 442 if (rv == net::ERR_IO_PENDING) | 448 if (rv == net::ERR_IO_PENDING) |
| 443 rv = callback.WaitForResult(); | 449 rv = callback.WaitForResult(); |
| 444 EXPECT_EQ(net::OK, rv); | 450 EXPECT_EQ(net::OK, rv); |
| 445 | 451 |
| 446 scoped_ptr<net::SSLClientSocket> sock( | 452 scoped_ptr<net::SSLClientSocket> sock( |
| 447 socket_factory_->CreateSSLClientSocket(transport, | 453 socket_factory_->CreateSSLClientSocket(transport, |
| 448 server_.kHostName, kDefaultSSLConfig)); | 454 net::HostPortPair(server_.kHostName, server_.kOKHTTPSPort), |
| 455 kDefaultSSLConfig)); |
| 449 | 456 |
| 450 rv = sock->Connect(&callback); | 457 rv = sock->Connect(&callback); |
| 451 if (rv != net::OK) { | 458 if (rv != net::OK) { |
| 452 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 459 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
| 453 | 460 |
| 454 rv = callback.WaitForResult(); | 461 rv = callback.WaitForResult(); |
| 455 EXPECT_EQ(net::OK, rv); | 462 EXPECT_EQ(net::OK, rv); |
| 456 } | 463 } |
| 457 | 464 |
| 458 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 465 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 NULL, 0); | 514 NULL, 0); |
| 508 | 515 |
| 509 net::ClientSocket* transport = | 516 net::ClientSocket* transport = |
| 510 new net::MockTCPClientSocket(addr, NULL, &data); | 517 new net::MockTCPClientSocket(addr, NULL, &data); |
| 511 int rv = transport->Connect(&callback); | 518 int rv = transport->Connect(&callback); |
| 512 if (rv == net::ERR_IO_PENDING) | 519 if (rv == net::ERR_IO_PENDING) |
| 513 rv = callback.WaitForResult(); | 520 rv = callback.WaitForResult(); |
| 514 EXPECT_EQ(net::OK, rv); | 521 EXPECT_EQ(net::OK, rv); |
| 515 | 522 |
| 516 scoped_ptr<net::SSLClientSocket> sock( | 523 scoped_ptr<net::SSLClientSocket> sock( |
| 517 socket_factory_->CreateSSLClientSocket( | 524 socket_factory_->CreateSSLClientSocket(transport, |
| 518 transport, server_.kHostName, kDefaultSSLConfig)); | 525 net::HostPortPair(server_.kHostName, server_.kOKHTTPSPort), |
| 526 kDefaultSSLConfig)); |
| 519 | 527 |
| 520 rv = sock->Connect(&callback); | 528 rv = sock->Connect(&callback); |
| 521 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, rv); | 529 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, rv); |
| 522 } | 530 } |
| OLD | NEW |