OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <utility> |
| 8 |
7 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
8 #include "base/location.h" | 10 #include "base/location.h" |
9 #include "base/macros.h" | 11 #include "base/macros.h" |
10 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
11 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
12 #include "base/single_thread_task_runner.h" | 14 #include "base/single_thread_task_runner.h" |
13 #include "base/thread_task_runner_handle.h" | 15 #include "base/thread_task_runner_handle.h" |
14 #include "base/time/time.h" | 16 #include "base/time/time.h" |
15 #include "net/base/address_list.h" | 17 #include "net/base/address_list.h" |
16 #include "net/base/io_buffer.h" | 18 #include "net/base/io_buffer.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 | 56 |
55 // WrappedStreamSocket is a base class that wraps an existing StreamSocket, | 57 // WrappedStreamSocket is a base class that wraps an existing StreamSocket, |
56 // forwarding the Socket and StreamSocket interfaces to the underlying | 58 // forwarding the Socket and StreamSocket interfaces to the underlying |
57 // transport. | 59 // transport. |
58 // This is to provide a common base class for subclasses to override specific | 60 // This is to provide a common base class for subclasses to override specific |
59 // StreamSocket methods for testing, while still communicating with a 'real' | 61 // StreamSocket methods for testing, while still communicating with a 'real' |
60 // StreamSocket. | 62 // StreamSocket. |
61 class WrappedStreamSocket : public StreamSocket { | 63 class WrappedStreamSocket : public StreamSocket { |
62 public: | 64 public: |
63 explicit WrappedStreamSocket(scoped_ptr<StreamSocket> transport) | 65 explicit WrappedStreamSocket(scoped_ptr<StreamSocket> transport) |
64 : transport_(transport.Pass()) {} | 66 : transport_(std::move(transport)) {} |
65 ~WrappedStreamSocket() override {} | 67 ~WrappedStreamSocket() override {} |
66 | 68 |
67 // StreamSocket implementation: | 69 // StreamSocket implementation: |
68 int Connect(const CompletionCallback& callback) override { | 70 int Connect(const CompletionCallback& callback) override { |
69 return transport_->Connect(callback); | 71 return transport_->Connect(callback); |
70 } | 72 } |
71 void Disconnect() override { transport_->Disconnect(); } | 73 void Disconnect() override { transport_->Disconnect(); } |
72 bool IsConnected() const override { return transport_->IsConnected(); } | 74 bool IsConnected() const override { return transport_->IsConnected(); } |
73 bool IsConnectedAndIdle() const override { | 75 bool IsConnectedAndIdle() const override { |
74 return transport_->IsConnectedAndIdle(); | 76 return transport_->IsConnectedAndIdle(); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 State state_; | 174 State state_; |
173 scoped_refptr<GrowableIOBuffer> read_buffer_; | 175 scoped_refptr<GrowableIOBuffer> read_buffer_; |
174 int buffer_size_; | 176 int buffer_size_; |
175 | 177 |
176 scoped_refptr<IOBuffer> user_read_buf_; | 178 scoped_refptr<IOBuffer> user_read_buf_; |
177 CompletionCallback user_read_callback_; | 179 CompletionCallback user_read_callback_; |
178 }; | 180 }; |
179 | 181 |
180 ReadBufferingStreamSocket::ReadBufferingStreamSocket( | 182 ReadBufferingStreamSocket::ReadBufferingStreamSocket( |
181 scoped_ptr<StreamSocket> transport) | 183 scoped_ptr<StreamSocket> transport) |
182 : WrappedStreamSocket(transport.Pass()), | 184 : WrappedStreamSocket(std::move(transport)), |
183 read_buffer_(new GrowableIOBuffer()), | 185 read_buffer_(new GrowableIOBuffer()), |
184 buffer_size_(0) {} | 186 buffer_size_(0) {} |
185 | 187 |
186 void ReadBufferingStreamSocket::SetBufferSize(int size) { | 188 void ReadBufferingStreamSocket::SetBufferSize(int size) { |
187 DCHECK(!user_read_buf_.get()); | 189 DCHECK(!user_read_buf_.get()); |
188 buffer_size_ = size; | 190 buffer_size_ = size; |
189 read_buffer_->SetCapacity(size); | 191 read_buffer_->SetCapacity(size); |
190 } | 192 } |
191 | 193 |
192 int ReadBufferingStreamSocket::Read(IOBuffer* buf, | 194 int ReadBufferingStreamSocket::Read(IOBuffer* buf, |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 int pending_read_error_; | 308 int pending_read_error_; |
307 | 309 |
308 bool have_write_error_; | 310 bool have_write_error_; |
309 int pending_write_error_; | 311 int pending_write_error_; |
310 | 312 |
311 DISALLOW_COPY_AND_ASSIGN(SynchronousErrorStreamSocket); | 313 DISALLOW_COPY_AND_ASSIGN(SynchronousErrorStreamSocket); |
312 }; | 314 }; |
313 | 315 |
314 SynchronousErrorStreamSocket::SynchronousErrorStreamSocket( | 316 SynchronousErrorStreamSocket::SynchronousErrorStreamSocket( |
315 scoped_ptr<StreamSocket> transport) | 317 scoped_ptr<StreamSocket> transport) |
316 : WrappedStreamSocket(transport.Pass()), | 318 : WrappedStreamSocket(std::move(transport)), |
317 have_read_error_(false), | 319 have_read_error_(false), |
318 pending_read_error_(OK), | 320 pending_read_error_(OK), |
319 have_write_error_(false), | 321 have_write_error_(false), |
320 pending_write_error_(OK) {} | 322 pending_write_error_(OK) {} |
321 | 323 |
322 int SynchronousErrorStreamSocket::Read(IOBuffer* buf, | 324 int SynchronousErrorStreamSocket::Read(IOBuffer* buf, |
323 int buf_len, | 325 int buf_len, |
324 const CompletionCallback& callback) { | 326 const CompletionCallback& callback) { |
325 if (have_read_error_) | 327 if (have_read_error_) |
326 return pending_read_error_; | 328 return pending_read_error_; |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 | 410 |
409 // The length for the pending write, or -1 if not scheduled. | 411 // The length for the pending write, or -1 if not scheduled. |
410 int pending_write_len_; | 412 int pending_write_len_; |
411 | 413 |
412 // WaitForWrite() wait loop. | 414 // WaitForWrite() wait loop. |
413 scoped_ptr<base::RunLoop> write_loop_; | 415 scoped_ptr<base::RunLoop> write_loop_; |
414 }; | 416 }; |
415 | 417 |
416 FakeBlockingStreamSocket::FakeBlockingStreamSocket( | 418 FakeBlockingStreamSocket::FakeBlockingStreamSocket( |
417 scoped_ptr<StreamSocket> transport) | 419 scoped_ptr<StreamSocket> transport) |
418 : WrappedStreamSocket(transport.Pass()), | 420 : WrappedStreamSocket(std::move(transport)), |
419 should_block_read_(false), | 421 should_block_read_(false), |
420 pending_read_result_(ERR_IO_PENDING), | 422 pending_read_result_(ERR_IO_PENDING), |
421 should_block_write_(false), | 423 should_block_write_(false), |
422 pending_write_len_(-1) {} | 424 pending_write_len_(-1) {} |
423 | 425 |
424 int FakeBlockingStreamSocket::Read(IOBuffer* buf, | 426 int FakeBlockingStreamSocket::Read(IOBuffer* buf, |
425 int len, | 427 int len, |
426 const CompletionCallback& callback) { | 428 const CompletionCallback& callback) { |
427 DCHECK(!pending_read_buf_); | 429 DCHECK(!pending_read_buf_); |
428 DCHECK(pending_read_callback_.is_null()); | 430 DCHECK(pending_read_callback_.is_null()); |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 pending_read_buf_ = nullptr; | 558 pending_read_buf_ = nullptr; |
557 base::ResetAndReturn(&pending_read_callback_).Run(result); | 559 base::ResetAndReturn(&pending_read_callback_).Run(result); |
558 } | 560 } |
559 } | 561 } |
560 | 562 |
561 // CountingStreamSocket wraps an existing StreamSocket and maintains a count of | 563 // CountingStreamSocket wraps an existing StreamSocket and maintains a count of |
562 // reads and writes on the socket. | 564 // reads and writes on the socket. |
563 class CountingStreamSocket : public WrappedStreamSocket { | 565 class CountingStreamSocket : public WrappedStreamSocket { |
564 public: | 566 public: |
565 explicit CountingStreamSocket(scoped_ptr<StreamSocket> transport) | 567 explicit CountingStreamSocket(scoped_ptr<StreamSocket> transport) |
566 : WrappedStreamSocket(transport.Pass()), | 568 : WrappedStreamSocket(std::move(transport)), |
567 read_count_(0), | 569 read_count_(0), |
568 write_count_(0) {} | 570 write_count_(0) {} |
569 ~CountingStreamSocket() override {} | 571 ~CountingStreamSocket() override {} |
570 | 572 |
571 // Socket implementation: | 573 // Socket implementation: |
572 int Read(IOBuffer* buf, | 574 int Read(IOBuffer* buf, |
573 int buf_len, | 575 int buf_len, |
574 const CompletionCallback& callback) override { | 576 const CompletionCallback& callback) override { |
575 read_count_++; | 577 read_count_++; |
576 return transport_->Read(buf, buf_len, callback); | 578 return transport_->Read(buf, buf_len, callback); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 return false; | 731 return false; |
730 } | 732 } |
731 return true; | 733 return true; |
732 } | 734 } |
733 | 735 |
734 scoped_ptr<SSLClientSocket> CreateSSLClientSocket( | 736 scoped_ptr<SSLClientSocket> CreateSSLClientSocket( |
735 scoped_ptr<StreamSocket> transport_socket, | 737 scoped_ptr<StreamSocket> transport_socket, |
736 const HostPortPair& host_and_port, | 738 const HostPortPair& host_and_port, |
737 const SSLConfig& ssl_config) { | 739 const SSLConfig& ssl_config) { |
738 scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 740 scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); |
739 connection->SetSocket(transport_socket.Pass()); | 741 connection->SetSocket(std::move(transport_socket)); |
740 return socket_factory_->CreateSSLClientSocket( | 742 return socket_factory_->CreateSSLClientSocket( |
741 connection.Pass(), host_and_port, ssl_config, context_); | 743 std::move(connection), host_and_port, ssl_config, context_); |
742 } | 744 } |
743 | 745 |
744 // Create an SSLClientSocket object and use it to connect to a test | 746 // Create an SSLClientSocket object and use it to connect to a test |
745 // server, then wait for connection results. This must be called after | 747 // server, then wait for connection results. This must be called after |
746 // a successful StartTestServer() call. | 748 // a successful StartTestServer() call. |
747 // |ssl_config| the SSL configuration to use. | 749 // |ssl_config| the SSL configuration to use. |
748 // |result| will retrieve the ::Connect() result value. | 750 // |result| will retrieve the ::Connect() result value. |
749 // Returns true on success, false otherwise. Success means that the SSL socket | 751 // Returns true on success, false otherwise. Success means that the SSL socket |
750 // could be created and its Connect() was called, not that the connection | 752 // could be created and its Connect() was called, not that the connection |
751 // itself was a success. | 753 // itself was a success. |
752 bool CreateAndConnectSSLClientSocket(const SSLConfig& ssl_config, | 754 bool CreateAndConnectSSLClientSocket(const SSLConfig& ssl_config, |
753 int* result) { | 755 int* result) { |
754 scoped_ptr<StreamSocket> transport( | 756 scoped_ptr<StreamSocket> transport( |
755 new TCPClientSocket(addr_, &log_, NetLog::Source())); | 757 new TCPClientSocket(addr_, &log_, NetLog::Source())); |
756 int rv = callback_.GetResult(transport->Connect(callback_.callback())); | 758 int rv = callback_.GetResult(transport->Connect(callback_.callback())); |
757 if (rv != OK) { | 759 if (rv != OK) { |
758 LOG(ERROR) << "Could not connect to SpawnedTestServer"; | 760 LOG(ERROR) << "Could not connect to SpawnedTestServer"; |
759 return false; | 761 return false; |
760 } | 762 } |
761 | 763 |
762 sock_ = CreateSSLClientSocket( | 764 sock_ = CreateSSLClientSocket(std::move(transport), |
763 transport.Pass(), spawned_test_server_->host_port_pair(), ssl_config); | 765 spawned_test_server_->host_port_pair(), |
| 766 ssl_config); |
764 EXPECT_FALSE(sock_->IsConnected()); | 767 EXPECT_FALSE(sock_->IsConnected()); |
765 | 768 |
766 *result = callback_.GetResult(sock_->Connect(callback_.callback())); | 769 *result = callback_.GetResult(sock_->Connect(callback_.callback())); |
767 return true; | 770 return true; |
768 } | 771 } |
769 | 772 |
770 // Adds the server certificate with provided cert status. | 773 // Adds the server certificate with provided cert status. |
771 // Must be called after StartTestServer has been called. | 774 // Must be called after StartTestServer has been called. |
772 void AddServerCertStatusToSSLConfig(CertStatus status, | 775 void AddServerCertStatusToSSLConfig(CertStatus status, |
773 SSLConfig* ssl_config) { | 776 SSLConfig* ssl_config) { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 return NULL; | 815 return NULL; |
813 | 816 |
814 TestCompletionCallback callback; | 817 TestCompletionCallback callback; |
815 TestNetLog log; | 818 TestNetLog log; |
816 scoped_ptr<StreamSocket> transport( | 819 scoped_ptr<StreamSocket> transport( |
817 new TCPClientSocket(addr, &log, NetLog::Source())); | 820 new TCPClientSocket(addr, &log, NetLog::Source())); |
818 int rv = callback.GetResult(transport->Connect(callback.callback())); | 821 int rv = callback.GetResult(transport->Connect(callback.callback())); |
819 EXPECT_EQ(OK, rv); | 822 EXPECT_EQ(OK, rv); |
820 | 823 |
821 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 824 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
822 transport.Pass(), spawned_test_server.host_port_pair(), SSLConfig())); | 825 std::move(transport), spawned_test_server.host_port_pair(), |
| 826 SSLConfig())); |
823 EXPECT_FALSE(sock->IsConnected()); | 827 EXPECT_FALSE(sock->IsConnected()); |
824 | 828 |
825 rv = callback.GetResult(sock->Connect(callback.callback())); | 829 rv = callback.GetResult(sock->Connect(callback.callback())); |
826 EXPECT_EQ(ERR_SSL_CLIENT_AUTH_CERT_NEEDED, rv); | 830 EXPECT_EQ(ERR_SSL_CLIENT_AUTH_CERT_NEEDED, rv); |
827 | 831 |
828 scoped_refptr<SSLCertRequestInfo> request_info = new SSLCertRequestInfo(); | 832 scoped_refptr<SSLCertRequestInfo> request_info = new SSLCertRequestInfo(); |
829 sock->GetSSLCertRequestInfo(request_info.get()); | 833 sock->GetSSLCertRequestInfo(request_info.get()); |
830 sock->Disconnect(); | 834 sock->Disconnect(); |
831 EXPECT_FALSE(sock->IsConnected()); | 835 EXPECT_FALSE(sock->IsConnected()); |
832 EXPECT_TRUE(spawned_test_server.host_port_pair().Equals( | 836 EXPECT_TRUE(spawned_test_server.host_port_pair().Equals( |
(...skipping 21 matching lines...) Expand all Loading... |
854 void CreateAndConnectUntilServerFinishedReceived( | 858 void CreateAndConnectUntilServerFinishedReceived( |
855 const SSLConfig& client_config, | 859 const SSLConfig& client_config, |
856 TestCompletionCallback* callback, | 860 TestCompletionCallback* callback, |
857 FakeBlockingStreamSocket** out_raw_transport, | 861 FakeBlockingStreamSocket** out_raw_transport, |
858 scoped_ptr<SSLClientSocket>* out_sock) { | 862 scoped_ptr<SSLClientSocket>* out_sock) { |
859 CHECK(spawned_test_server()); | 863 CHECK(spawned_test_server()); |
860 | 864 |
861 scoped_ptr<StreamSocket> real_transport( | 865 scoped_ptr<StreamSocket> real_transport( |
862 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 866 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
863 scoped_ptr<FakeBlockingStreamSocket> transport( | 867 scoped_ptr<FakeBlockingStreamSocket> transport( |
864 new FakeBlockingStreamSocket(real_transport.Pass())); | 868 new FakeBlockingStreamSocket(std::move(real_transport))); |
865 int rv = callback->GetResult(transport->Connect(callback->callback())); | 869 int rv = callback->GetResult(transport->Connect(callback->callback())); |
866 EXPECT_EQ(OK, rv); | 870 EXPECT_EQ(OK, rv); |
867 | 871 |
868 FakeBlockingStreamSocket* raw_transport = transport.get(); | 872 FakeBlockingStreamSocket* raw_transport = transport.get(); |
869 scoped_ptr<SSLClientSocket> sock = CreateSSLClientSocket( | 873 scoped_ptr<SSLClientSocket> sock = CreateSSLClientSocket( |
870 transport.Pass(), spawned_test_server()->host_port_pair(), | 874 std::move(transport), spawned_test_server()->host_port_pair(), |
871 client_config); | 875 client_config); |
872 | 876 |
873 // Connect. Stop before the client processes the first server leg | 877 // Connect. Stop before the client processes the first server leg |
874 // (ServerHello, etc.) | 878 // (ServerHello, etc.) |
875 raw_transport->BlockReadResult(); | 879 raw_transport->BlockReadResult(); |
876 rv = sock->Connect(callback->callback()); | 880 rv = sock->Connect(callback->callback()); |
877 EXPECT_EQ(ERR_IO_PENDING, rv); | 881 EXPECT_EQ(ERR_IO_PENDING, rv); |
878 raw_transport->WaitForReadResult(); | 882 raw_transport->WaitForReadResult(); |
879 | 883 |
880 // Release the ServerHello and wait for the client to write | 884 // Release the ServerHello and wait for the client to write |
881 // ClientKeyExchange, etc. (A proxy for waiting for the entirety of the | 885 // ClientKeyExchange, etc. (A proxy for waiting for the entirety of the |
882 // server's leg to complete, since it may span multiple reads.) | 886 // server's leg to complete, since it may span multiple reads.) |
883 EXPECT_FALSE(callback->have_result()); | 887 EXPECT_FALSE(callback->have_result()); |
884 raw_transport->BlockWrite(); | 888 raw_transport->BlockWrite(); |
885 raw_transport->UnblockReadResult(); | 889 raw_transport->UnblockReadResult(); |
886 raw_transport->WaitForWrite(); | 890 raw_transport->WaitForWrite(); |
887 | 891 |
888 // And, finally, release that and block the next server leg | 892 // And, finally, release that and block the next server leg |
889 // (ChangeCipherSpec, Finished). | 893 // (ChangeCipherSpec, Finished). |
890 raw_transport->BlockReadResult(); | 894 raw_transport->BlockReadResult(); |
891 raw_transport->UnblockWrite(); | 895 raw_transport->UnblockWrite(); |
892 | 896 |
893 *out_raw_transport = raw_transport; | 897 *out_raw_transport = raw_transport; |
894 *out_sock = sock.Pass(); | 898 *out_sock = std::move(sock); |
895 } | 899 } |
896 | 900 |
897 void TestFalseStart(const SpawnedTestServer::SSLOptions& server_options, | 901 void TestFalseStart(const SpawnedTestServer::SSLOptions& server_options, |
898 const SSLConfig& client_config, | 902 const SSLConfig& client_config, |
899 bool expect_false_start) { | 903 bool expect_false_start) { |
900 ASSERT_TRUE(StartTestServer(server_options)); | 904 ASSERT_TRUE(StartTestServer(server_options)); |
901 | 905 |
902 TestCompletionCallback callback; | 906 TestCompletionCallback callback; |
903 FakeBlockingStreamSocket* raw_transport = NULL; | 907 FakeBlockingStreamSocket* raw_transport = NULL; |
904 scoped_ptr<SSLClientSocket> sock; | 908 scoped_ptr<SSLClientSocket> sock; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 980 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
977 | 981 |
978 TestCompletionCallback callback; | 982 TestCompletionCallback callback; |
979 TestNetLog log; | 983 TestNetLog log; |
980 scoped_ptr<StreamSocket> transport( | 984 scoped_ptr<StreamSocket> transport( |
981 new TCPClientSocket(addr(), &log, NetLog::Source())); | 985 new TCPClientSocket(addr(), &log, NetLog::Source())); |
982 int rv = callback.GetResult(transport->Connect(callback.callback())); | 986 int rv = callback.GetResult(transport->Connect(callback.callback())); |
983 EXPECT_EQ(OK, rv); | 987 EXPECT_EQ(OK, rv); |
984 | 988 |
985 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 989 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
986 transport.Pass(), spawned_test_server()->host_port_pair(), SSLConfig())); | 990 std::move(transport), spawned_test_server()->host_port_pair(), |
| 991 SSLConfig())); |
987 | 992 |
988 EXPECT_FALSE(sock->IsConnected()); | 993 EXPECT_FALSE(sock->IsConnected()); |
989 | 994 |
990 rv = sock->Connect(callback.callback()); | 995 rv = sock->Connect(callback.callback()); |
991 | 996 |
992 TestNetLogEntry::List entries; | 997 TestNetLogEntry::List entries; |
993 log.GetEntries(&entries); | 998 log.GetEntries(&entries); |
994 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT)); | 999 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT)); |
995 if (rv == ERR_IO_PENDING) | 1000 if (rv == ERR_IO_PENDING) |
996 rv = callback.WaitForResult(); | 1001 rv = callback.WaitForResult(); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1123 | 1128 |
1124 TestCompletionCallback callback; | 1129 TestCompletionCallback callback; |
1125 scoped_ptr<StreamSocket> transport( | 1130 scoped_ptr<StreamSocket> transport( |
1126 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1131 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1127 EXPECT_EQ(0, transport->GetTotalReceivedBytes()); | 1132 EXPECT_EQ(0, transport->GetTotalReceivedBytes()); |
1128 | 1133 |
1129 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1134 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1130 EXPECT_EQ(OK, rv); | 1135 EXPECT_EQ(OK, rv); |
1131 | 1136 |
1132 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1137 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1133 transport.Pass(), spawned_test_server()->host_port_pair(), SSLConfig())); | 1138 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1139 SSLConfig())); |
1134 EXPECT_EQ(0, sock->GetTotalReceivedBytes()); | 1140 EXPECT_EQ(0, sock->GetTotalReceivedBytes()); |
1135 | 1141 |
1136 rv = callback.GetResult(sock->Connect(callback.callback())); | 1142 rv = callback.GetResult(sock->Connect(callback.callback())); |
1137 EXPECT_EQ(OK, rv); | 1143 EXPECT_EQ(OK, rv); |
1138 | 1144 |
1139 // Number of network bytes received should increase because of SSL socket | 1145 // Number of network bytes received should increase because of SSL socket |
1140 // establishment. | 1146 // establishment. |
1141 EXPECT_GT(sock->GetTotalReceivedBytes(), 0); | 1147 EXPECT_GT(sock->GetTotalReceivedBytes(), 0); |
1142 | 1148 |
1143 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 1149 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
(...skipping 30 matching lines...) Expand all Loading... |
1174 // Tests that SSLClientSocket properly handles when the underlying transport | 1180 // Tests that SSLClientSocket properly handles when the underlying transport |
1175 // synchronously fails a transport read in during the handshake. The error code | 1181 // synchronously fails a transport read in during the handshake. The error code |
1176 // should be preserved so SSLv3 fallback logic can condition on it. | 1182 // should be preserved so SSLv3 fallback logic can condition on it. |
1177 TEST_F(SSLClientSocketTest, Connect_WithSynchronousError) { | 1183 TEST_F(SSLClientSocketTest, Connect_WithSynchronousError) { |
1178 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1184 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1179 | 1185 |
1180 TestCompletionCallback callback; | 1186 TestCompletionCallback callback; |
1181 scoped_ptr<StreamSocket> real_transport( | 1187 scoped_ptr<StreamSocket> real_transport( |
1182 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1188 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1183 scoped_ptr<SynchronousErrorStreamSocket> transport( | 1189 scoped_ptr<SynchronousErrorStreamSocket> transport( |
1184 new SynchronousErrorStreamSocket(real_transport.Pass())); | 1190 new SynchronousErrorStreamSocket(std::move(real_transport))); |
1185 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1191 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1186 EXPECT_EQ(OK, rv); | 1192 EXPECT_EQ(OK, rv); |
1187 | 1193 |
1188 // Disable TLS False Start to avoid handshake non-determinism. | 1194 // Disable TLS False Start to avoid handshake non-determinism. |
1189 SSLConfig ssl_config; | 1195 SSLConfig ssl_config; |
1190 ssl_config.false_start_enabled = false; | 1196 ssl_config.false_start_enabled = false; |
1191 | 1197 |
1192 SynchronousErrorStreamSocket* raw_transport = transport.get(); | 1198 SynchronousErrorStreamSocket* raw_transport = transport.get(); |
1193 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1199 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1194 transport.Pass(), spawned_test_server()->host_port_pair(), ssl_config)); | 1200 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1201 ssl_config)); |
1195 | 1202 |
1196 raw_transport->SetNextWriteError(ERR_CONNECTION_RESET); | 1203 raw_transport->SetNextWriteError(ERR_CONNECTION_RESET); |
1197 | 1204 |
1198 rv = callback.GetResult(sock->Connect(callback.callback())); | 1205 rv = callback.GetResult(sock->Connect(callback.callback())); |
1199 EXPECT_EQ(ERR_CONNECTION_RESET, rv); | 1206 EXPECT_EQ(ERR_CONNECTION_RESET, rv); |
1200 EXPECT_FALSE(sock->IsConnected()); | 1207 EXPECT_FALSE(sock->IsConnected()); |
1201 } | 1208 } |
1202 | 1209 |
1203 // Tests that the SSLClientSocket properly handles when the underlying transport | 1210 // Tests that the SSLClientSocket properly handles when the underlying transport |
1204 // synchronously returns an error code - such as if an intermediary terminates | 1211 // synchronously returns an error code - such as if an intermediary terminates |
1205 // the socket connection uncleanly. | 1212 // the socket connection uncleanly. |
1206 // This is a regression test for http://crbug.com/238536 | 1213 // This is a regression test for http://crbug.com/238536 |
1207 TEST_F(SSLClientSocketTest, Read_WithSynchronousError) { | 1214 TEST_F(SSLClientSocketTest, Read_WithSynchronousError) { |
1208 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1215 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1209 | 1216 |
1210 TestCompletionCallback callback; | 1217 TestCompletionCallback callback; |
1211 scoped_ptr<StreamSocket> real_transport( | 1218 scoped_ptr<StreamSocket> real_transport( |
1212 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1219 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1213 scoped_ptr<SynchronousErrorStreamSocket> transport( | 1220 scoped_ptr<SynchronousErrorStreamSocket> transport( |
1214 new SynchronousErrorStreamSocket(real_transport.Pass())); | 1221 new SynchronousErrorStreamSocket(std::move(real_transport))); |
1215 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1222 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1216 EXPECT_EQ(OK, rv); | 1223 EXPECT_EQ(OK, rv); |
1217 | 1224 |
1218 // Disable TLS False Start to avoid handshake non-determinism. | 1225 // Disable TLS False Start to avoid handshake non-determinism. |
1219 SSLConfig ssl_config; | 1226 SSLConfig ssl_config; |
1220 ssl_config.false_start_enabled = false; | 1227 ssl_config.false_start_enabled = false; |
1221 | 1228 |
1222 SynchronousErrorStreamSocket* raw_transport = transport.get(); | 1229 SynchronousErrorStreamSocket* raw_transport = transport.get(); |
1223 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1230 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1224 transport.Pass(), spawned_test_server()->host_port_pair(), ssl_config)); | 1231 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1232 ssl_config)); |
1225 | 1233 |
1226 rv = callback.GetResult(sock->Connect(callback.callback())); | 1234 rv = callback.GetResult(sock->Connect(callback.callback())); |
1227 EXPECT_EQ(OK, rv); | 1235 EXPECT_EQ(OK, rv); |
1228 EXPECT_TRUE(sock->IsConnected()); | 1236 EXPECT_TRUE(sock->IsConnected()); |
1229 | 1237 |
1230 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 1238 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
1231 static const int kRequestTextSize = | 1239 static const int kRequestTextSize = |
1232 static_cast<int>(arraysize(request_text) - 1); | 1240 static_cast<int>(arraysize(request_text) - 1); |
1233 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestTextSize)); | 1241 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestTextSize)); |
1234 memcpy(request_buffer->data(), request_text, kRequestTextSize); | 1242 memcpy(request_buffer->data(), request_text, kRequestTextSize); |
(...skipping 20 matching lines...) Expand all Loading... |
1255 // This is a regression test for http://crbug.com/249848 | 1263 // This is a regression test for http://crbug.com/249848 |
1256 TEST_F(SSLClientSocketTest, Write_WithSynchronousError) { | 1264 TEST_F(SSLClientSocketTest, Write_WithSynchronousError) { |
1257 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1265 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1258 | 1266 |
1259 TestCompletionCallback callback; | 1267 TestCompletionCallback callback; |
1260 scoped_ptr<StreamSocket> real_transport( | 1268 scoped_ptr<StreamSocket> real_transport( |
1261 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1269 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1262 // Note: |error_socket|'s ownership is handed to |transport|, but a pointer | 1270 // Note: |error_socket|'s ownership is handed to |transport|, but a pointer |
1263 // is retained in order to configure additional errors. | 1271 // is retained in order to configure additional errors. |
1264 scoped_ptr<SynchronousErrorStreamSocket> error_socket( | 1272 scoped_ptr<SynchronousErrorStreamSocket> error_socket( |
1265 new SynchronousErrorStreamSocket(real_transport.Pass())); | 1273 new SynchronousErrorStreamSocket(std::move(real_transport))); |
1266 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); | 1274 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); |
1267 scoped_ptr<FakeBlockingStreamSocket> transport( | 1275 scoped_ptr<FakeBlockingStreamSocket> transport( |
1268 new FakeBlockingStreamSocket(error_socket.Pass())); | 1276 new FakeBlockingStreamSocket(std::move(error_socket))); |
1269 FakeBlockingStreamSocket* raw_transport = transport.get(); | 1277 FakeBlockingStreamSocket* raw_transport = transport.get(); |
1270 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1278 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1271 EXPECT_EQ(OK, rv); | 1279 EXPECT_EQ(OK, rv); |
1272 | 1280 |
1273 // Disable TLS False Start to avoid handshake non-determinism. | 1281 // Disable TLS False Start to avoid handshake non-determinism. |
1274 SSLConfig ssl_config; | 1282 SSLConfig ssl_config; |
1275 ssl_config.false_start_enabled = false; | 1283 ssl_config.false_start_enabled = false; |
1276 | 1284 |
1277 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1285 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1278 transport.Pass(), spawned_test_server()->host_port_pair(), ssl_config)); | 1286 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1287 ssl_config)); |
1279 | 1288 |
1280 rv = callback.GetResult(sock->Connect(callback.callback())); | 1289 rv = callback.GetResult(sock->Connect(callback.callback())); |
1281 EXPECT_EQ(OK, rv); | 1290 EXPECT_EQ(OK, rv); |
1282 EXPECT_TRUE(sock->IsConnected()); | 1291 EXPECT_TRUE(sock->IsConnected()); |
1283 | 1292 |
1284 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 1293 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
1285 static const int kRequestTextSize = | 1294 static const int kRequestTextSize = |
1286 static_cast<int>(arraysize(request_text) - 1); | 1295 static_cast<int>(arraysize(request_text) - 1); |
1287 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestTextSize)); | 1296 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestTextSize)); |
1288 memcpy(request_buffer->data(), request_text, kRequestTextSize); | 1297 memcpy(request_buffer->data(), request_text, kRequestTextSize); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1321 // the socket. This is a regression test for part of https://crbug.com/381160. | 1330 // the socket. This is a regression test for part of https://crbug.com/381160. |
1322 TEST_F(SSLClientSocketTest, Write_WithSynchronousErrorNoRead) { | 1331 TEST_F(SSLClientSocketTest, Write_WithSynchronousErrorNoRead) { |
1323 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1332 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1324 | 1333 |
1325 TestCompletionCallback callback; | 1334 TestCompletionCallback callback; |
1326 scoped_ptr<StreamSocket> real_transport( | 1335 scoped_ptr<StreamSocket> real_transport( |
1327 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1336 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1328 // Note: intermediate sockets' ownership are handed to |sock|, but a pointer | 1337 // Note: intermediate sockets' ownership are handed to |sock|, but a pointer |
1329 // is retained in order to query them. | 1338 // is retained in order to query them. |
1330 scoped_ptr<SynchronousErrorStreamSocket> error_socket( | 1339 scoped_ptr<SynchronousErrorStreamSocket> error_socket( |
1331 new SynchronousErrorStreamSocket(real_transport.Pass())); | 1340 new SynchronousErrorStreamSocket(std::move(real_transport))); |
1332 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); | 1341 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); |
1333 scoped_ptr<CountingStreamSocket> counting_socket( | 1342 scoped_ptr<CountingStreamSocket> counting_socket( |
1334 new CountingStreamSocket(error_socket.Pass())); | 1343 new CountingStreamSocket(std::move(error_socket))); |
1335 CountingStreamSocket* raw_counting_socket = counting_socket.get(); | 1344 CountingStreamSocket* raw_counting_socket = counting_socket.get(); |
1336 int rv = callback.GetResult(counting_socket->Connect(callback.callback())); | 1345 int rv = callback.GetResult(counting_socket->Connect(callback.callback())); |
1337 ASSERT_EQ(OK, rv); | 1346 ASSERT_EQ(OK, rv); |
1338 | 1347 |
1339 // Disable TLS False Start to avoid handshake non-determinism. | 1348 // Disable TLS False Start to avoid handshake non-determinism. |
1340 SSLConfig ssl_config; | 1349 SSLConfig ssl_config; |
1341 ssl_config.false_start_enabled = false; | 1350 ssl_config.false_start_enabled = false; |
1342 | 1351 |
1343 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1352 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1344 counting_socket.Pass(), spawned_test_server()->host_port_pair(), | 1353 std::move(counting_socket), spawned_test_server()->host_port_pair(), |
1345 ssl_config)); | 1354 ssl_config)); |
1346 | 1355 |
1347 rv = callback.GetResult(sock->Connect(callback.callback())); | 1356 rv = callback.GetResult(sock->Connect(callback.callback())); |
1348 ASSERT_EQ(OK, rv); | 1357 ASSERT_EQ(OK, rv); |
1349 ASSERT_TRUE(sock->IsConnected()); | 1358 ASSERT_TRUE(sock->IsConnected()); |
1350 | 1359 |
1351 // Simulate an unclean/forcible shutdown on the underlying socket. | 1360 // Simulate an unclean/forcible shutdown on the underlying socket. |
1352 raw_error_socket->SetNextWriteError(ERR_CONNECTION_RESET); | 1361 raw_error_socket->SetNextWriteError(ERR_CONNECTION_RESET); |
1353 | 1362 |
1354 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 1363 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1421 // Regression test for http://crbug.com/232633 | 1430 // Regression test for http://crbug.com/232633 |
1422 TEST_F(SSLClientSocketTest, Read_DeleteWhilePendingFullDuplex) { | 1431 TEST_F(SSLClientSocketTest, Read_DeleteWhilePendingFullDuplex) { |
1423 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1432 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1424 | 1433 |
1425 TestCompletionCallback callback; | 1434 TestCompletionCallback callback; |
1426 scoped_ptr<StreamSocket> real_transport( | 1435 scoped_ptr<StreamSocket> real_transport( |
1427 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1436 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1428 // Note: |error_socket|'s ownership is handed to |transport|, but a pointer | 1437 // Note: |error_socket|'s ownership is handed to |transport|, but a pointer |
1429 // is retained in order to configure additional errors. | 1438 // is retained in order to configure additional errors. |
1430 scoped_ptr<SynchronousErrorStreamSocket> error_socket( | 1439 scoped_ptr<SynchronousErrorStreamSocket> error_socket( |
1431 new SynchronousErrorStreamSocket(real_transport.Pass())); | 1440 new SynchronousErrorStreamSocket(std::move(real_transport))); |
1432 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); | 1441 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); |
1433 scoped_ptr<FakeBlockingStreamSocket> transport( | 1442 scoped_ptr<FakeBlockingStreamSocket> transport( |
1434 new FakeBlockingStreamSocket(error_socket.Pass())); | 1443 new FakeBlockingStreamSocket(std::move(error_socket))); |
1435 FakeBlockingStreamSocket* raw_transport = transport.get(); | 1444 FakeBlockingStreamSocket* raw_transport = transport.get(); |
1436 | 1445 |
1437 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1446 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1438 EXPECT_EQ(OK, rv); | 1447 EXPECT_EQ(OK, rv); |
1439 | 1448 |
1440 // Disable TLS False Start to avoid handshake non-determinism. | 1449 // Disable TLS False Start to avoid handshake non-determinism. |
1441 SSLConfig ssl_config; | 1450 SSLConfig ssl_config; |
1442 ssl_config.false_start_enabled = false; | 1451 ssl_config.false_start_enabled = false; |
1443 | 1452 |
1444 scoped_ptr<SSLClientSocket> sock = CreateSSLClientSocket( | 1453 scoped_ptr<SSLClientSocket> sock = CreateSSLClientSocket( |
1445 transport.Pass(), spawned_test_server()->host_port_pair(), ssl_config); | 1454 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1455 ssl_config); |
1446 | 1456 |
1447 rv = callback.GetResult(sock->Connect(callback.callback())); | 1457 rv = callback.GetResult(sock->Connect(callback.callback())); |
1448 EXPECT_EQ(OK, rv); | 1458 EXPECT_EQ(OK, rv); |
1449 EXPECT_TRUE(sock->IsConnected()); | 1459 EXPECT_TRUE(sock->IsConnected()); |
1450 | 1460 |
1451 std::string request_text = "GET / HTTP/1.1\r\nUser-Agent: long browser name "; | 1461 std::string request_text = "GET / HTTP/1.1\r\nUser-Agent: long browser name "; |
1452 request_text.append(20 * 1024, '*'); | 1462 request_text.append(20 * 1024, '*'); |
1453 request_text.append("\r\n\r\n"); | 1463 request_text.append("\r\n\r\n"); |
1454 scoped_refptr<DrainableIOBuffer> request_buffer(new DrainableIOBuffer( | 1464 scoped_refptr<DrainableIOBuffer> request_buffer(new DrainableIOBuffer( |
1455 new StringIOBuffer(request_text), request_text.size())); | 1465 new StringIOBuffer(request_text), request_text.size())); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1529 // Regression test for http://crbug.com/335557 | 1539 // Regression test for http://crbug.com/335557 |
1530 TEST_F(SSLClientSocketTest, Read_WithWriteError) { | 1540 TEST_F(SSLClientSocketTest, Read_WithWriteError) { |
1531 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1541 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1532 | 1542 |
1533 TestCompletionCallback callback; | 1543 TestCompletionCallback callback; |
1534 scoped_ptr<StreamSocket> real_transport( | 1544 scoped_ptr<StreamSocket> real_transport( |
1535 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1545 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1536 // Note: |error_socket|'s ownership is handed to |transport|, but a pointer | 1546 // Note: |error_socket|'s ownership is handed to |transport|, but a pointer |
1537 // is retained in order to configure additional errors. | 1547 // is retained in order to configure additional errors. |
1538 scoped_ptr<SynchronousErrorStreamSocket> error_socket( | 1548 scoped_ptr<SynchronousErrorStreamSocket> error_socket( |
1539 new SynchronousErrorStreamSocket(real_transport.Pass())); | 1549 new SynchronousErrorStreamSocket(std::move(real_transport))); |
1540 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); | 1550 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); |
1541 scoped_ptr<FakeBlockingStreamSocket> transport( | 1551 scoped_ptr<FakeBlockingStreamSocket> transport( |
1542 new FakeBlockingStreamSocket(error_socket.Pass())); | 1552 new FakeBlockingStreamSocket(std::move(error_socket))); |
1543 FakeBlockingStreamSocket* raw_transport = transport.get(); | 1553 FakeBlockingStreamSocket* raw_transport = transport.get(); |
1544 | 1554 |
1545 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1555 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1546 EXPECT_EQ(OK, rv); | 1556 EXPECT_EQ(OK, rv); |
1547 | 1557 |
1548 // Disable TLS False Start to avoid handshake non-determinism. | 1558 // Disable TLS False Start to avoid handshake non-determinism. |
1549 SSLConfig ssl_config; | 1559 SSLConfig ssl_config; |
1550 ssl_config.false_start_enabled = false; | 1560 ssl_config.false_start_enabled = false; |
1551 | 1561 |
1552 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1562 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1553 transport.Pass(), spawned_test_server()->host_port_pair(), ssl_config)); | 1563 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1564 ssl_config)); |
1554 | 1565 |
1555 rv = callback.GetResult(sock->Connect(callback.callback())); | 1566 rv = callback.GetResult(sock->Connect(callback.callback())); |
1556 EXPECT_EQ(OK, rv); | 1567 EXPECT_EQ(OK, rv); |
1557 EXPECT_TRUE(sock->IsConnected()); | 1568 EXPECT_TRUE(sock->IsConnected()); |
1558 | 1569 |
1559 // Send a request so there is something to read from the socket. | 1570 // Send a request so there is something to read from the socket. |
1560 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 1571 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
1561 static const int kRequestTextSize = | 1572 static const int kRequestTextSize = |
1562 static_cast<int>(arraysize(request_text) - 1); | 1573 static_cast<int>(arraysize(request_text) - 1); |
1563 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestTextSize)); | 1574 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestTextSize)); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1623 | 1634 |
1624 // Tests that SSLClientSocket fails the handshake if the underlying | 1635 // Tests that SSLClientSocket fails the handshake if the underlying |
1625 // transport is cleanly closed. | 1636 // transport is cleanly closed. |
1626 TEST_F(SSLClientSocketTest, Connect_WithZeroReturn) { | 1637 TEST_F(SSLClientSocketTest, Connect_WithZeroReturn) { |
1627 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1638 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1628 | 1639 |
1629 TestCompletionCallback callback; | 1640 TestCompletionCallback callback; |
1630 scoped_ptr<StreamSocket> real_transport( | 1641 scoped_ptr<StreamSocket> real_transport( |
1631 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1642 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1632 scoped_ptr<SynchronousErrorStreamSocket> transport( | 1643 scoped_ptr<SynchronousErrorStreamSocket> transport( |
1633 new SynchronousErrorStreamSocket(real_transport.Pass())); | 1644 new SynchronousErrorStreamSocket(std::move(real_transport))); |
1634 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1645 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1635 EXPECT_EQ(OK, rv); | 1646 EXPECT_EQ(OK, rv); |
1636 | 1647 |
1637 SynchronousErrorStreamSocket* raw_transport = transport.get(); | 1648 SynchronousErrorStreamSocket* raw_transport = transport.get(); |
1638 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1649 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1639 transport.Pass(), spawned_test_server()->host_port_pair(), SSLConfig())); | 1650 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1651 SSLConfig())); |
1640 | 1652 |
1641 raw_transport->SetNextReadError(0); | 1653 raw_transport->SetNextReadError(0); |
1642 | 1654 |
1643 rv = callback.GetResult(sock->Connect(callback.callback())); | 1655 rv = callback.GetResult(sock->Connect(callback.callback())); |
1644 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv); | 1656 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv); |
1645 EXPECT_FALSE(sock->IsConnected()); | 1657 EXPECT_FALSE(sock->IsConnected()); |
1646 } | 1658 } |
1647 | 1659 |
1648 // Tests that SSLClientSocket returns a Read of size 0 if the underlying socket | 1660 // Tests that SSLClientSocket returns a Read of size 0 if the underlying socket |
1649 // is cleanly closed, but the peer does not send close_notify. | 1661 // is cleanly closed, but the peer does not send close_notify. |
1650 // This is a regression test for https://crbug.com/422246 | 1662 // This is a regression test for https://crbug.com/422246 |
1651 TEST_F(SSLClientSocketTest, Read_WithZeroReturn) { | 1663 TEST_F(SSLClientSocketTest, Read_WithZeroReturn) { |
1652 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1664 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1653 | 1665 |
1654 TestCompletionCallback callback; | 1666 TestCompletionCallback callback; |
1655 scoped_ptr<StreamSocket> real_transport( | 1667 scoped_ptr<StreamSocket> real_transport( |
1656 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1668 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1657 scoped_ptr<SynchronousErrorStreamSocket> transport( | 1669 scoped_ptr<SynchronousErrorStreamSocket> transport( |
1658 new SynchronousErrorStreamSocket(real_transport.Pass())); | 1670 new SynchronousErrorStreamSocket(std::move(real_transport))); |
1659 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1671 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1660 EXPECT_EQ(OK, rv); | 1672 EXPECT_EQ(OK, rv); |
1661 | 1673 |
1662 // Disable TLS False Start to ensure the handshake has completed. | 1674 // Disable TLS False Start to ensure the handshake has completed. |
1663 SSLConfig ssl_config; | 1675 SSLConfig ssl_config; |
1664 ssl_config.false_start_enabled = false; | 1676 ssl_config.false_start_enabled = false; |
1665 | 1677 |
1666 SynchronousErrorStreamSocket* raw_transport = transport.get(); | 1678 SynchronousErrorStreamSocket* raw_transport = transport.get(); |
1667 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1679 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1668 transport.Pass(), spawned_test_server()->host_port_pair(), ssl_config)); | 1680 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1681 ssl_config)); |
1669 | 1682 |
1670 rv = callback.GetResult(sock->Connect(callback.callback())); | 1683 rv = callback.GetResult(sock->Connect(callback.callback())); |
1671 EXPECT_EQ(OK, rv); | 1684 EXPECT_EQ(OK, rv); |
1672 EXPECT_TRUE(sock->IsConnected()); | 1685 EXPECT_TRUE(sock->IsConnected()); |
1673 | 1686 |
1674 raw_transport->SetNextReadError(0); | 1687 raw_transport->SetNextReadError(0); |
1675 scoped_refptr<IOBuffer> buf(new IOBuffer(4096)); | 1688 scoped_refptr<IOBuffer> buf(new IOBuffer(4096)); |
1676 rv = callback.GetResult(sock->Read(buf.get(), 4096, callback.callback())); | 1689 rv = callback.GetResult(sock->Read(buf.get(), 4096, callback.callback())); |
1677 EXPECT_EQ(0, rv); | 1690 EXPECT_EQ(0, rv); |
1678 } | 1691 } |
1679 | 1692 |
1680 // Tests that SSLClientSocket cleanly returns a Read of size 0 if the | 1693 // Tests that SSLClientSocket cleanly returns a Read of size 0 if the |
1681 // underlying socket is cleanly closed asynchronously. | 1694 // underlying socket is cleanly closed asynchronously. |
1682 // This is a regression test for https://crbug.com/422246 | 1695 // This is a regression test for https://crbug.com/422246 |
1683 TEST_F(SSLClientSocketTest, Read_WithAsyncZeroReturn) { | 1696 TEST_F(SSLClientSocketTest, Read_WithAsyncZeroReturn) { |
1684 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1697 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1685 | 1698 |
1686 TestCompletionCallback callback; | 1699 TestCompletionCallback callback; |
1687 scoped_ptr<StreamSocket> real_transport( | 1700 scoped_ptr<StreamSocket> real_transport( |
1688 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1701 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1689 scoped_ptr<SynchronousErrorStreamSocket> error_socket( | 1702 scoped_ptr<SynchronousErrorStreamSocket> error_socket( |
1690 new SynchronousErrorStreamSocket(real_transport.Pass())); | 1703 new SynchronousErrorStreamSocket(std::move(real_transport))); |
1691 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); | 1704 SynchronousErrorStreamSocket* raw_error_socket = error_socket.get(); |
1692 scoped_ptr<FakeBlockingStreamSocket> transport( | 1705 scoped_ptr<FakeBlockingStreamSocket> transport( |
1693 new FakeBlockingStreamSocket(error_socket.Pass())); | 1706 new FakeBlockingStreamSocket(std::move(error_socket))); |
1694 FakeBlockingStreamSocket* raw_transport = transport.get(); | 1707 FakeBlockingStreamSocket* raw_transport = transport.get(); |
1695 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1708 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1696 EXPECT_EQ(OK, rv); | 1709 EXPECT_EQ(OK, rv); |
1697 | 1710 |
1698 // Disable TLS False Start to ensure the handshake has completed. | 1711 // Disable TLS False Start to ensure the handshake has completed. |
1699 SSLConfig ssl_config; | 1712 SSLConfig ssl_config; |
1700 ssl_config.false_start_enabled = false; | 1713 ssl_config.false_start_enabled = false; |
1701 | 1714 |
1702 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1715 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1703 transport.Pass(), spawned_test_server()->host_port_pair(), ssl_config)); | 1716 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1717 ssl_config)); |
1704 | 1718 |
1705 rv = callback.GetResult(sock->Connect(callback.callback())); | 1719 rv = callback.GetResult(sock->Connect(callback.callback())); |
1706 EXPECT_EQ(OK, rv); | 1720 EXPECT_EQ(OK, rv); |
1707 EXPECT_TRUE(sock->IsConnected()); | 1721 EXPECT_TRUE(sock->IsConnected()); |
1708 | 1722 |
1709 raw_error_socket->SetNextReadError(0); | 1723 raw_error_socket->SetNextReadError(0); |
1710 raw_transport->BlockReadResult(); | 1724 raw_transport->BlockReadResult(); |
1711 scoped_refptr<IOBuffer> buf(new IOBuffer(4096)); | 1725 scoped_refptr<IOBuffer> buf(new IOBuffer(4096)); |
1712 rv = sock->Read(buf.get(), 4096, callback.callback()); | 1726 rv = sock->Read(buf.get(), 4096, callback.callback()); |
1713 EXPECT_EQ(ERR_IO_PENDING, rv); | 1727 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1760 } | 1774 } |
1761 | 1775 |
1762 TEST_F(SSLClientSocketTest, Read_ManySmallRecords) { | 1776 TEST_F(SSLClientSocketTest, Read_ManySmallRecords) { |
1763 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1777 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1764 | 1778 |
1765 TestCompletionCallback callback; | 1779 TestCompletionCallback callback; |
1766 | 1780 |
1767 scoped_ptr<StreamSocket> real_transport( | 1781 scoped_ptr<StreamSocket> real_transport( |
1768 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1782 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1769 scoped_ptr<ReadBufferingStreamSocket> transport( | 1783 scoped_ptr<ReadBufferingStreamSocket> transport( |
1770 new ReadBufferingStreamSocket(real_transport.Pass())); | 1784 new ReadBufferingStreamSocket(std::move(real_transport))); |
1771 ReadBufferingStreamSocket* raw_transport = transport.get(); | 1785 ReadBufferingStreamSocket* raw_transport = transport.get(); |
1772 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1786 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1773 ASSERT_EQ(OK, rv); | 1787 ASSERT_EQ(OK, rv); |
1774 | 1788 |
1775 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1789 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1776 transport.Pass(), spawned_test_server()->host_port_pair(), SSLConfig())); | 1790 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1791 SSLConfig())); |
1777 | 1792 |
1778 rv = callback.GetResult(sock->Connect(callback.callback())); | 1793 rv = callback.GetResult(sock->Connect(callback.callback())); |
1779 ASSERT_EQ(OK, rv); | 1794 ASSERT_EQ(OK, rv); |
1780 ASSERT_TRUE(sock->IsConnected()); | 1795 ASSERT_TRUE(sock->IsConnected()); |
1781 | 1796 |
1782 const char request_text[] = "GET /ssl-many-small-records HTTP/1.0\r\n\r\n"; | 1797 const char request_text[] = "GET /ssl-many-small-records HTTP/1.0\r\n\r\n"; |
1783 scoped_refptr<IOBuffer> request_buffer( | 1798 scoped_refptr<IOBuffer> request_buffer( |
1784 new IOBuffer(arraysize(request_text) - 1)); | 1799 new IOBuffer(arraysize(request_text) - 1)); |
1785 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); | 1800 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); |
1786 | 1801 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1833 | 1848 |
1834 TestCompletionCallback callback; | 1849 TestCompletionCallback callback; |
1835 TestNetLog log; | 1850 TestNetLog log; |
1836 log.SetCaptureMode(NetLogCaptureMode::IncludeSocketBytes()); | 1851 log.SetCaptureMode(NetLogCaptureMode::IncludeSocketBytes()); |
1837 scoped_ptr<StreamSocket> transport( | 1852 scoped_ptr<StreamSocket> transport( |
1838 new TCPClientSocket(addr(), &log, NetLog::Source())); | 1853 new TCPClientSocket(addr(), &log, NetLog::Source())); |
1839 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1854 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1840 EXPECT_EQ(OK, rv); | 1855 EXPECT_EQ(OK, rv); |
1841 | 1856 |
1842 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1857 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1843 transport.Pass(), spawned_test_server()->host_port_pair(), SSLConfig())); | 1858 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1859 SSLConfig())); |
1844 | 1860 |
1845 rv = callback.GetResult(sock->Connect(callback.callback())); | 1861 rv = callback.GetResult(sock->Connect(callback.callback())); |
1846 EXPECT_EQ(OK, rv); | 1862 EXPECT_EQ(OK, rv); |
1847 EXPECT_TRUE(sock->IsConnected()); | 1863 EXPECT_TRUE(sock->IsConnected()); |
1848 | 1864 |
1849 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 1865 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
1850 scoped_refptr<IOBuffer> request_buffer( | 1866 scoped_refptr<IOBuffer> request_buffer( |
1851 new IOBuffer(arraysize(request_text) - 1)); | 1867 new IOBuffer(arraysize(request_text) - 1)); |
1852 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); | 1868 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); |
1853 | 1869 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1901 | 1917 |
1902 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 1918 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
1903 | 1919 |
1904 TestCompletionCallback callback; | 1920 TestCompletionCallback callback; |
1905 scoped_ptr<StreamSocket> transport( | 1921 scoped_ptr<StreamSocket> transport( |
1906 new MockTCPClientSocket(addr(), NULL, &data)); | 1922 new MockTCPClientSocket(addr(), NULL, &data)); |
1907 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1923 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1908 EXPECT_EQ(OK, rv); | 1924 EXPECT_EQ(OK, rv); |
1909 | 1925 |
1910 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 1926 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
1911 transport.Pass(), spawned_test_server()->host_port_pair(), SSLConfig())); | 1927 std::move(transport), spawned_test_server()->host_port_pair(), |
| 1928 SSLConfig())); |
1912 | 1929 |
1913 rv = callback.GetResult(sock->Connect(callback.callback())); | 1930 rv = callback.GetResult(sock->Connect(callback.callback())); |
1914 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, rv); | 1931 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, rv); |
1915 } | 1932 } |
1916 | 1933 |
1917 TEST_F(SSLClientSocketTest, CipherSuiteDisables) { | 1934 TEST_F(SSLClientSocketTest, CipherSuiteDisables) { |
1918 // Rather than exhaustively disabling every AES_128_CBC ciphersuite defined at | 1935 // Rather than exhaustively disabling every AES_128_CBC ciphersuite defined at |
1919 // http://www.iana.org/assignments/tls-parameters/tls-parameters.xml, only | 1936 // http://www.iana.org/assignments/tls-parameters/tls-parameters.xml, only |
1920 // disabling those cipher suites that the test server actually implements. | 1937 // disabling those cipher suites that the test server actually implements. |
1921 const uint16_t kCiphersToDisable[] = { | 1938 const uint16_t kCiphersToDisable[] = { |
(...skipping 23 matching lines...) Expand all Loading... |
1945 TEST_F(SSLClientSocketTest, ClientSocketHandleNotFromPool) { | 1962 TEST_F(SSLClientSocketTest, ClientSocketHandleNotFromPool) { |
1946 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 1963 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
1947 | 1964 |
1948 TestCompletionCallback callback; | 1965 TestCompletionCallback callback; |
1949 scoped_ptr<StreamSocket> transport( | 1966 scoped_ptr<StreamSocket> transport( |
1950 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 1967 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
1951 int rv = callback.GetResult(transport->Connect(callback.callback())); | 1968 int rv = callback.GetResult(transport->Connect(callback.callback())); |
1952 EXPECT_EQ(OK, rv); | 1969 EXPECT_EQ(OK, rv); |
1953 | 1970 |
1954 scoped_ptr<ClientSocketHandle> socket_handle(new ClientSocketHandle()); | 1971 scoped_ptr<ClientSocketHandle> socket_handle(new ClientSocketHandle()); |
1955 socket_handle->SetSocket(transport.Pass()); | 1972 socket_handle->SetSocket(std::move(transport)); |
1956 | 1973 |
1957 scoped_ptr<SSLClientSocket> sock(socket_factory_->CreateSSLClientSocket( | 1974 scoped_ptr<SSLClientSocket> sock(socket_factory_->CreateSSLClientSocket( |
1958 socket_handle.Pass(), spawned_test_server()->host_port_pair(), | 1975 std::move(socket_handle), spawned_test_server()->host_port_pair(), |
1959 SSLConfig(), context_)); | 1976 SSLConfig(), context_)); |
1960 | 1977 |
1961 EXPECT_FALSE(sock->IsConnected()); | 1978 EXPECT_FALSE(sock->IsConnected()); |
1962 rv = callback.GetResult(sock->Connect(callback.callback())); | 1979 rv = callback.GetResult(sock->Connect(callback.callback())); |
1963 EXPECT_EQ(OK, rv); | 1980 EXPECT_EQ(OK, rv); |
1964 } | 1981 } |
1965 | 1982 |
1966 // Verifies that SSLClientSocket::ExportKeyingMaterial return a success | 1983 // Verifies that SSLClientSocket::ExportKeyingMaterial return a success |
1967 // code and different keying label results in different keying material. | 1984 // code and different keying label results in different keying material. |
1968 TEST_F(SSLClientSocketTest, ExportKeyingMaterial) { | 1985 TEST_F(SSLClientSocketTest, ExportKeyingMaterial) { |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2465 // Tests that IsConnectedAndIdle treats a socket as idle even if a Write hasn't | 2482 // Tests that IsConnectedAndIdle treats a socket as idle even if a Write hasn't |
2466 // been flushed completely out of SSLClientSocket's internal buffers. This is a | 2483 // been flushed completely out of SSLClientSocket's internal buffers. This is a |
2467 // regression test for https://crbug.com/466147. | 2484 // regression test for https://crbug.com/466147. |
2468 TEST_F(SSLClientSocketTest, ReusableAfterWrite) { | 2485 TEST_F(SSLClientSocketTest, ReusableAfterWrite) { |
2469 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 2486 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
2470 | 2487 |
2471 TestCompletionCallback callback; | 2488 TestCompletionCallback callback; |
2472 scoped_ptr<StreamSocket> real_transport( | 2489 scoped_ptr<StreamSocket> real_transport( |
2473 new TCPClientSocket(addr(), NULL, NetLog::Source())); | 2490 new TCPClientSocket(addr(), NULL, NetLog::Source())); |
2474 scoped_ptr<FakeBlockingStreamSocket> transport( | 2491 scoped_ptr<FakeBlockingStreamSocket> transport( |
2475 new FakeBlockingStreamSocket(real_transport.Pass())); | 2492 new FakeBlockingStreamSocket(std::move(real_transport))); |
2476 FakeBlockingStreamSocket* raw_transport = transport.get(); | 2493 FakeBlockingStreamSocket* raw_transport = transport.get(); |
2477 ASSERT_EQ(OK, callback.GetResult(transport->Connect(callback.callback()))); | 2494 ASSERT_EQ(OK, callback.GetResult(transport->Connect(callback.callback()))); |
2478 | 2495 |
2479 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( | 2496 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( |
2480 transport.Pass(), spawned_test_server()->host_port_pair(), SSLConfig())); | 2497 std::move(transport), spawned_test_server()->host_port_pair(), |
| 2498 SSLConfig())); |
2481 ASSERT_EQ(OK, callback.GetResult(sock->Connect(callback.callback()))); | 2499 ASSERT_EQ(OK, callback.GetResult(sock->Connect(callback.callback()))); |
2482 | 2500 |
2483 // Block any application data from reaching the network. | 2501 // Block any application data from reaching the network. |
2484 raw_transport->BlockWrite(); | 2502 raw_transport->BlockWrite(); |
2485 | 2503 |
2486 // Write a partial HTTP request. | 2504 // Write a partial HTTP request. |
2487 const char kRequestText[] = "GET / HTTP/1.0"; | 2505 const char kRequestText[] = "GET / HTTP/1.0"; |
2488 const size_t kRequestLen = arraysize(kRequestText) - 1; | 2506 const size_t kRequestLen = arraysize(kRequestText) - 1; |
2489 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestLen)); | 2507 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestLen)); |
2490 memcpy(request_buffer->data(), kRequestText, kRequestLen); | 2508 memcpy(request_buffer->data(), kRequestText, kRequestLen); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2522 ASSERT_TRUE(sock_->GetSSLInfo(&ssl_info)); | 2540 ASSERT_TRUE(sock_->GetSSLInfo(&ssl_info)); |
2523 EXPECT_EQ(SSLInfo::HANDSHAKE_RESUME, ssl_info.handshake_type); | 2541 EXPECT_EQ(SSLInfo::HANDSHAKE_RESUME, ssl_info.handshake_type); |
2524 sock_.reset(); | 2542 sock_.reset(); |
2525 | 2543 |
2526 // Using a different HostPortPair uses a different session cache key. | 2544 // Using a different HostPortPair uses a different session cache key. |
2527 scoped_ptr<StreamSocket> transport( | 2545 scoped_ptr<StreamSocket> transport( |
2528 new TCPClientSocket(addr(), &log_, NetLog::Source())); | 2546 new TCPClientSocket(addr(), &log_, NetLog::Source())); |
2529 TestCompletionCallback callback; | 2547 TestCompletionCallback callback; |
2530 ASSERT_EQ(OK, callback.GetResult(transport->Connect(callback.callback()))); | 2548 ASSERT_EQ(OK, callback.GetResult(transport->Connect(callback.callback()))); |
2531 scoped_ptr<SSLClientSocket> sock = CreateSSLClientSocket( | 2549 scoped_ptr<SSLClientSocket> sock = CreateSSLClientSocket( |
2532 transport.Pass(), HostPortPair("example.com", 443), ssl_config); | 2550 std::move(transport), HostPortPair("example.com", 443), ssl_config); |
2533 ASSERT_EQ(OK, callback.GetResult(sock->Connect(callback.callback()))); | 2551 ASSERT_EQ(OK, callback.GetResult(sock->Connect(callback.callback()))); |
2534 ASSERT_TRUE(sock->GetSSLInfo(&ssl_info)); | 2552 ASSERT_TRUE(sock->GetSSLInfo(&ssl_info)); |
2535 EXPECT_EQ(SSLInfo::HANDSHAKE_FULL, ssl_info.handshake_type); | 2553 EXPECT_EQ(SSLInfo::HANDSHAKE_FULL, ssl_info.handshake_type); |
2536 sock.reset(); | 2554 sock.reset(); |
2537 | 2555 |
2538 SSLClientSocket::ClearSessionCache(); | 2556 SSLClientSocket::ClearSessionCache(); |
2539 | 2557 |
2540 // After clearing the session cache, the next handshake doesn't resume. | 2558 // After clearing the session cache, the next handshake doesn't resume. |
2541 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); | 2559 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); |
2542 ASSERT_EQ(OK, rv); | 2560 ASSERT_EQ(OK, rv); |
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3215 int rv; | 3233 int rv; |
3216 ASSERT_TRUE(CreateAndConnectSSLClientSocket(client_config, &rv)); | 3234 ASSERT_TRUE(CreateAndConnectSSLClientSocket(client_config, &rv)); |
3217 EXPECT_EQ(OK, rv); | 3235 EXPECT_EQ(OK, rv); |
3218 | 3236 |
3219 std::string proto; | 3237 std::string proto; |
3220 EXPECT_EQ(SSLClientSocket::kNextProtoUnsupported, | 3238 EXPECT_EQ(SSLClientSocket::kNextProtoUnsupported, |
3221 sock_->GetNextProto(&proto)); | 3239 sock_->GetNextProto(&proto)); |
3222 } | 3240 } |
3223 | 3241 |
3224 } // namespace net | 3242 } // namespace net |
OLD | NEW |