| Index: net/socket/ssl_client_socket_unittest.cc
|
| diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc
|
| index 02dd8f042e8066a6a94d5aa99b8aad4d54062ac9..b8353428d40073541edc6cdd23ff8dabf6f185e1 100644
|
| --- a/net/socket/ssl_client_socket_unittest.cc
|
| +++ b/net/socket/ssl_client_socket_unittest.cc
|
| @@ -14,6 +14,7 @@
|
| #include "net/base/ssl_config_service.h"
|
| #include "net/base/test_completion_callback.h"
|
| #include "net/socket/client_socket_factory.h"
|
| +#include "net/socket/client_socket_handle.h"
|
| #include "net/socket/socket_test_util.h"
|
| #include "net/socket/tcp_client_socket.h"
|
| #include "net/test/test_server.h"
|
| @@ -705,3 +706,39 @@ TEST_F(SSLClientSocketTest, CipherSuiteDisables) {
|
| EXPECT_TRUE(LogContainsSSLConnectEndEvent(entries, -1) ||
|
| LogContainsSSLConnectEndEvent(entries, -2));
|
| }
|
| +
|
| +// When creating an SSLClientSocket, it is allowed to pass in a
|
| +// ClientSocketHandle that is not obtained from a client socket pool.
|
| +// Here we verify that such a simple ClientSocketHandle, not associated with any
|
| +// client socket pool, can be destroyed safely.
|
| +TEST_F(SSLClientSocketTest, ClientSocketHandleNotFromPool) {
|
| + net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath());
|
| + ASSERT_TRUE(test_server.Start());
|
| +
|
| + net::AddressList addr;
|
| + ASSERT_TRUE(test_server.GetAddressList(&addr));
|
| +
|
| + TestCompletionCallback callback;
|
| + net::StreamSocket* transport = new net::TCPClientSocket(
|
| + addr, NULL, net::NetLog::Source());
|
| + int rv = transport->Connect(&callback);
|
| + if (rv == net::ERR_IO_PENDING)
|
| + rv = callback.WaitForResult();
|
| + EXPECT_EQ(net::OK, rv);
|
| +
|
| + net::ClientSocketHandle* socket_handle = new net::ClientSocketHandle();
|
| + socket_handle->set_socket(transport);
|
| +
|
| + net::SSLClientSocketContext context;
|
| + context.cert_verifier = cert_verifier_.get();
|
| + scoped_ptr<net::SSLClientSocket> ssl_socket(
|
| + socket_factory_->CreateSSLClientSocket(
|
| + socket_handle, test_server.host_port_pair(), kDefaultSSLConfig,
|
| + NULL, context));
|
| +
|
| + EXPECT_FALSE(ssl_socket->IsConnected());
|
| + rv = ssl_socket->Connect(&callback);
|
| + if (rv == net::ERR_IO_PENDING)
|
| + rv = callback.WaitForResult();
|
| + EXPECT_EQ(net::OK, rv);
|
| +}
|
|
|