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_resolver.h" | 8 #include "net/base/host_resolver.h" |
9 #include "net/base/io_buffer.h" | 9 #include "net/base/io_buffer.h" |
10 #include "net/base/net_log.h" | 10 #include "net/base/net_log.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 60 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
61 net::ClientSocket* transport = new net::TCPClientSocket( | 61 net::ClientSocket* transport = new net::TCPClientSocket( |
62 addr, &log, net::NetLog::Source()); | 62 addr, &log, net::NetLog::Source()); |
63 int rv = transport->Connect(&callback); | 63 int rv = transport->Connect(&callback); |
64 if (rv == net::ERR_IO_PENDING) | 64 if (rv == net::ERR_IO_PENDING) |
65 rv = callback.WaitForResult(); | 65 rv = callback.WaitForResult(); |
66 EXPECT_EQ(net::OK, rv); | 66 EXPECT_EQ(net::OK, rv); |
67 | 67 |
68 scoped_ptr<net::SSLClientSocket> sock( | 68 scoped_ptr<net::SSLClientSocket> sock( |
69 socket_factory_->CreateSSLClientSocket(transport, | 69 socket_factory_->CreateSSLClientSocket(transport, |
70 test_server.host_port_pair().host(), kDefaultSSLConfig, | 70 test_server.host_port_pair().host(), kDefaultSSLConfig)); |
71 NULL /* ssl_host_info */)); | |
72 | 71 |
73 EXPECT_FALSE(sock->IsConnected()); | 72 EXPECT_FALSE(sock->IsConnected()); |
74 | 73 |
75 rv = sock->Connect(&callback); | 74 rv = sock->Connect(&callback); |
76 EXPECT_TRUE(net::LogContainsBeginEvent( | 75 EXPECT_TRUE(net::LogContainsBeginEvent( |
77 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); | 76 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); |
78 if (rv != net::OK) { | 77 if (rv != net::OK) { |
79 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 78 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
80 EXPECT_FALSE(sock->IsConnected()); | 79 EXPECT_FALSE(sock->IsConnected()); |
81 EXPECT_FALSE(net::LogContainsEndEvent( | 80 EXPECT_FALSE(net::LogContainsEndEvent( |
(...skipping 22 matching lines...) Expand all Loading... |
104 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 103 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
105 net::ClientSocket* transport = new net::TCPClientSocket( | 104 net::ClientSocket* transport = new net::TCPClientSocket( |
106 addr, &log, net::NetLog::Source()); | 105 addr, &log, net::NetLog::Source()); |
107 int rv = transport->Connect(&callback); | 106 int rv = transport->Connect(&callback); |
108 if (rv == net::ERR_IO_PENDING) | 107 if (rv == net::ERR_IO_PENDING) |
109 rv = callback.WaitForResult(); | 108 rv = callback.WaitForResult(); |
110 EXPECT_EQ(net::OK, rv); | 109 EXPECT_EQ(net::OK, rv); |
111 | 110 |
112 scoped_ptr<net::SSLClientSocket> sock( | 111 scoped_ptr<net::SSLClientSocket> sock( |
113 socket_factory_->CreateSSLClientSocket(transport, | 112 socket_factory_->CreateSSLClientSocket(transport, |
114 test_server.host_port_pair().host(), kDefaultSSLConfig, | 113 test_server.host_port_pair().host(), kDefaultSSLConfig)); |
115 NULL /* ssl_host_info */)); | |
116 | 114 |
117 EXPECT_FALSE(sock->IsConnected()); | 115 EXPECT_FALSE(sock->IsConnected()); |
118 | 116 |
119 rv = sock->Connect(&callback); | 117 rv = sock->Connect(&callback); |
120 EXPECT_TRUE(net::LogContainsBeginEvent( | 118 EXPECT_TRUE(net::LogContainsBeginEvent( |
121 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); | 119 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); |
122 if (rv != net::OK) { | 120 if (rv != net::OK) { |
123 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 121 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
124 EXPECT_FALSE(sock->IsConnected()); | 122 EXPECT_FALSE(sock->IsConnected()); |
125 EXPECT_FALSE(net::LogContainsEndEvent( | 123 EXPECT_FALSE(net::LogContainsEndEvent( |
(...skipping 21 matching lines...) Expand all Loading... |
147 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 145 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
148 net::ClientSocket* transport = new net::TCPClientSocket( | 146 net::ClientSocket* transport = new net::TCPClientSocket( |
149 addr, &log, net::NetLog::Source()); | 147 addr, &log, net::NetLog::Source()); |
150 int rv = transport->Connect(&callback); | 148 int rv = transport->Connect(&callback); |
151 if (rv == net::ERR_IO_PENDING) | 149 if (rv == net::ERR_IO_PENDING) |
152 rv = callback.WaitForResult(); | 150 rv = callback.WaitForResult(); |
153 EXPECT_EQ(net::OK, rv); | 151 EXPECT_EQ(net::OK, rv); |
154 | 152 |
155 scoped_ptr<net::SSLClientSocket> sock( | 153 scoped_ptr<net::SSLClientSocket> sock( |
156 socket_factory_->CreateSSLClientSocket(transport, | 154 socket_factory_->CreateSSLClientSocket(transport, |
157 test_server.host_port_pair().host(), kDefaultSSLConfig, | 155 test_server.host_port_pair().host(), kDefaultSSLConfig)); |
158 NULL /* ssl_host_info */)); | |
159 | 156 |
160 EXPECT_FALSE(sock->IsConnected()); | 157 EXPECT_FALSE(sock->IsConnected()); |
161 | 158 |
162 rv = sock->Connect(&callback); | 159 rv = sock->Connect(&callback); |
163 | 160 |
164 EXPECT_TRUE(net::LogContainsBeginEvent( | 161 EXPECT_TRUE(net::LogContainsBeginEvent( |
165 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); | 162 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); |
166 if (rv != net::ERR_CERT_COMMON_NAME_INVALID) { | 163 if (rv != net::ERR_CERT_COMMON_NAME_INVALID) { |
167 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 164 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
168 EXPECT_FALSE(sock->IsConnected()); | 165 EXPECT_FALSE(sock->IsConnected()); |
(...skipping 24 matching lines...) Expand all Loading... |
193 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 190 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
194 net::ClientSocket* transport = new net::TCPClientSocket( | 191 net::ClientSocket* transport = new net::TCPClientSocket( |
195 addr, &log, net::NetLog::Source()); | 192 addr, &log, net::NetLog::Source()); |
196 int rv = transport->Connect(&callback); | 193 int rv = transport->Connect(&callback); |
197 if (rv == net::ERR_IO_PENDING) | 194 if (rv == net::ERR_IO_PENDING) |
198 rv = callback.WaitForResult(); | 195 rv = callback.WaitForResult(); |
199 EXPECT_EQ(net::OK, rv); | 196 EXPECT_EQ(net::OK, rv); |
200 | 197 |
201 scoped_ptr<net::SSLClientSocket> sock( | 198 scoped_ptr<net::SSLClientSocket> sock( |
202 socket_factory_->CreateSSLClientSocket(transport, | 199 socket_factory_->CreateSSLClientSocket(transport, |
203 test_server.host_port_pair().host(), kDefaultSSLConfig, | 200 test_server.host_port_pair().host(), kDefaultSSLConfig)); |
204 NULL /* ssl_host_info */)); | |
205 | 201 |
206 EXPECT_FALSE(sock->IsConnected()); | 202 EXPECT_FALSE(sock->IsConnected()); |
207 | 203 |
208 rv = sock->Connect(&callback); | 204 rv = sock->Connect(&callback); |
209 EXPECT_TRUE(net::LogContainsBeginEvent( | 205 EXPECT_TRUE(net::LogContainsBeginEvent( |
210 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); | 206 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); |
211 if (rv != net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { | 207 if (rv != net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { |
212 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 208 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
213 EXPECT_FALSE(sock->IsConnected()); | 209 EXPECT_FALSE(sock->IsConnected()); |
214 EXPECT_FALSE(net::LogContainsEndEvent( | 210 EXPECT_FALSE(net::LogContainsEndEvent( |
(...skipping 29 matching lines...) Expand all Loading... |
244 if (rv == net::ERR_IO_PENDING) | 240 if (rv == net::ERR_IO_PENDING) |
245 rv = callback.WaitForResult(); | 241 rv = callback.WaitForResult(); |
246 EXPECT_EQ(net::OK, rv); | 242 EXPECT_EQ(net::OK, rv); |
247 | 243 |
248 net::SSLConfig ssl_config = kDefaultSSLConfig; | 244 net::SSLConfig ssl_config = kDefaultSSLConfig; |
249 ssl_config.send_client_cert = true; | 245 ssl_config.send_client_cert = true; |
250 ssl_config.client_cert = NULL; | 246 ssl_config.client_cert = NULL; |
251 | 247 |
252 scoped_ptr<net::SSLClientSocket> sock( | 248 scoped_ptr<net::SSLClientSocket> sock( |
253 socket_factory_->CreateSSLClientSocket(transport, | 249 socket_factory_->CreateSSLClientSocket(transport, |
254 test_server.host_port_pair().host(), ssl_config, | 250 test_server.host_port_pair().host(), ssl_config)); |
255 NULL /* ssl_host_info */)); | |
256 | 251 |
257 EXPECT_FALSE(sock->IsConnected()); | 252 EXPECT_FALSE(sock->IsConnected()); |
258 | 253 |
259 // Our test server accepts certificate-less connections. | 254 // Our test server accepts certificate-less connections. |
260 // TODO(davidben): Add a test which requires them and verify the error. | 255 // TODO(davidben): Add a test which requires them and verify the error. |
261 rv = sock->Connect(&callback); | 256 rv = sock->Connect(&callback); |
262 EXPECT_TRUE(net::LogContainsBeginEvent( | 257 EXPECT_TRUE(net::LogContainsBeginEvent( |
263 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); | 258 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); |
264 if (rv != net::OK) { | 259 if (rv != net::OK) { |
265 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 260 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
(...skipping 29 matching lines...) Expand all Loading... |
295 addr, NULL, net::NetLog::Source()); | 290 addr, NULL, net::NetLog::Source()); |
296 int rv = transport->Connect(&callback); | 291 int rv = transport->Connect(&callback); |
297 if (rv == net::ERR_IO_PENDING) | 292 if (rv == net::ERR_IO_PENDING) |
298 rv = callback.WaitForResult(); | 293 rv = callback.WaitForResult(); |
299 EXPECT_EQ(net::OK, rv); | 294 EXPECT_EQ(net::OK, rv); |
300 | 295 |
301 scoped_ptr<net::SSLClientSocket> sock( | 296 scoped_ptr<net::SSLClientSocket> sock( |
302 socket_factory_->CreateSSLClientSocket( | 297 socket_factory_->CreateSSLClientSocket( |
303 transport, | 298 transport, |
304 test_server.host_port_pair().host(), | 299 test_server.host_port_pair().host(), |
305 kDefaultSSLConfig, | 300 kDefaultSSLConfig)); |
306 NULL /* ssl_host_info */)); | |
307 | 301 |
308 rv = sock->Connect(&callback); | 302 rv = sock->Connect(&callback); |
309 if (rv != net::OK) { | 303 if (rv != net::OK) { |
310 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 304 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
311 | 305 |
312 rv = callback.WaitForResult(); | 306 rv = callback.WaitForResult(); |
313 EXPECT_EQ(net::OK, rv); | 307 EXPECT_EQ(net::OK, rv); |
314 } | 308 } |
315 EXPECT_TRUE(sock->IsConnected()); | 309 EXPECT_TRUE(sock->IsConnected()); |
316 | 310 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 addr, NULL, net::NetLog::Source()); | 350 addr, NULL, net::NetLog::Source()); |
357 int rv = transport->Connect(&callback); | 351 int rv = transport->Connect(&callback); |
358 if (rv == net::ERR_IO_PENDING) | 352 if (rv == net::ERR_IO_PENDING) |
359 rv = callback.WaitForResult(); | 353 rv = callback.WaitForResult(); |
360 EXPECT_EQ(net::OK, rv); | 354 EXPECT_EQ(net::OK, rv); |
361 | 355 |
362 scoped_ptr<net::SSLClientSocket> sock( | 356 scoped_ptr<net::SSLClientSocket> sock( |
363 socket_factory_->CreateSSLClientSocket( | 357 socket_factory_->CreateSSLClientSocket( |
364 transport, | 358 transport, |
365 test_server.host_port_pair().host(), | 359 test_server.host_port_pair().host(), |
366 kDefaultSSLConfig, | 360 kDefaultSSLConfig)); |
367 NULL /* ssl_host_info */)); | |
368 | 361 |
369 rv = sock->Connect(&callback); | 362 rv = sock->Connect(&callback); |
370 if (rv != net::OK) { | 363 if (rv != net::OK) { |
371 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 364 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
372 | 365 |
373 rv = callback.WaitForResult(); | 366 rv = callback.WaitForResult(); |
374 EXPECT_EQ(net::OK, rv); | 367 EXPECT_EQ(net::OK, rv); |
375 } | 368 } |
376 EXPECT_TRUE(sock->IsConnected()); | 369 EXPECT_TRUE(sock->IsConnected()); |
377 | 370 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 TestCompletionCallback callback; | 407 TestCompletionCallback callback; |
415 net::ClientSocket* transport = new net::TCPClientSocket( | 408 net::ClientSocket* transport = new net::TCPClientSocket( |
416 addr, NULL, net::NetLog::Source()); | 409 addr, NULL, net::NetLog::Source()); |
417 int rv = transport->Connect(&callback); | 410 int rv = transport->Connect(&callback); |
418 if (rv == net::ERR_IO_PENDING) | 411 if (rv == net::ERR_IO_PENDING) |
419 rv = callback.WaitForResult(); | 412 rv = callback.WaitForResult(); |
420 EXPECT_EQ(net::OK, rv); | 413 EXPECT_EQ(net::OK, rv); |
421 | 414 |
422 scoped_ptr<net::SSLClientSocket> sock( | 415 scoped_ptr<net::SSLClientSocket> sock( |
423 socket_factory_->CreateSSLClientSocket(transport, | 416 socket_factory_->CreateSSLClientSocket(transport, |
424 test_server.host_port_pair().host(), kDefaultSSLConfig, | 417 test_server.host_port_pair().host(), kDefaultSSLConfig)); |
425 NULL /* ssl_host_info */)); | |
426 | 418 |
427 rv = sock->Connect(&callback); | 419 rv = sock->Connect(&callback); |
428 if (rv != net::OK) { | 420 if (rv != net::OK) { |
429 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 421 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
430 | 422 |
431 rv = callback.WaitForResult(); | 423 rv = callback.WaitForResult(); |
432 EXPECT_EQ(net::OK, rv); | 424 EXPECT_EQ(net::OK, rv); |
433 } | 425 } |
434 | 426 |
435 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 427 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 TestCompletionCallback callback; | 460 TestCompletionCallback callback; |
469 net::ClientSocket* transport = new net::TCPClientSocket( | 461 net::ClientSocket* transport = new net::TCPClientSocket( |
470 addr, NULL, net::NetLog::Source()); | 462 addr, NULL, net::NetLog::Source()); |
471 int rv = transport->Connect(&callback); | 463 int rv = transport->Connect(&callback); |
472 if (rv == net::ERR_IO_PENDING) | 464 if (rv == net::ERR_IO_PENDING) |
473 rv = callback.WaitForResult(); | 465 rv = callback.WaitForResult(); |
474 EXPECT_EQ(net::OK, rv); | 466 EXPECT_EQ(net::OK, rv); |
475 | 467 |
476 scoped_ptr<net::SSLClientSocket> sock( | 468 scoped_ptr<net::SSLClientSocket> sock( |
477 socket_factory_->CreateSSLClientSocket(transport, | 469 socket_factory_->CreateSSLClientSocket(transport, |
478 test_server.host_port_pair().host(), kDefaultSSLConfig, | 470 test_server.host_port_pair().host(), kDefaultSSLConfig)); |
479 NULL /* ssl_host_info */)); | |
480 | 471 |
481 rv = sock->Connect(&callback); | 472 rv = sock->Connect(&callback); |
482 if (rv != net::OK) { | 473 if (rv != net::OK) { |
483 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 474 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
484 | 475 |
485 rv = callback.WaitForResult(); | 476 rv = callback.WaitForResult(); |
486 EXPECT_EQ(net::OK, rv); | 477 EXPECT_EQ(net::OK, rv); |
487 } | 478 } |
488 | 479 |
489 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; | 480 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 | 533 |
543 net::ClientSocket* transport = | 534 net::ClientSocket* transport = |
544 new net::MockTCPClientSocket(addr, NULL, &data); | 535 new net::MockTCPClientSocket(addr, NULL, &data); |
545 int rv = transport->Connect(&callback); | 536 int rv = transport->Connect(&callback); |
546 if (rv == net::ERR_IO_PENDING) | 537 if (rv == net::ERR_IO_PENDING) |
547 rv = callback.WaitForResult(); | 538 rv = callback.WaitForResult(); |
548 EXPECT_EQ(net::OK, rv); | 539 EXPECT_EQ(net::OK, rv); |
549 | 540 |
550 scoped_ptr<net::SSLClientSocket> sock( | 541 scoped_ptr<net::SSLClientSocket> sock( |
551 socket_factory_->CreateSSLClientSocket( | 542 socket_factory_->CreateSSLClientSocket( |
552 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, | 543 transport, test_server.host_port_pair().host(), kDefaultSSLConfig)); |
553 NULL /* ssl_host_info */)); | |
554 | 544 |
555 rv = sock->Connect(&callback); | 545 rv = sock->Connect(&callback); |
556 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, rv); | 546 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, rv); |
557 } | 547 } |
OLD | NEW |