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/cert_verifier.h" | 8 #include "net/base/cert_verifier.h" |
9 #include "net/base/host_resolver.h" | 9 #include "net/base/host_resolver.h" |
10 #include "net/base/io_buffer.h" | 10 #include "net/base/io_buffer.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 | 26 |
27 class SSLClientSocketTest : public PlatformTest { | 27 class SSLClientSocketTest : public PlatformTest { |
28 public: | 28 public: |
29 SSLClientSocketTest() | 29 SSLClientSocketTest() |
30 : socket_factory_(net::ClientSocketFactory::GetDefaultFactory()), | 30 : socket_factory_(net::ClientSocketFactory::GetDefaultFactory()), |
31 cert_verifier_(new net::CertVerifier) { | 31 cert_verifier_(new net::CertVerifier) { |
32 } | 32 } |
33 | 33 |
34 protected: | 34 protected: |
35 net::SSLClientSocket* CreateSSLClientSocket( | 35 net::SSLClientSocket* CreateSSLClientSocket( |
36 net::ClientSocket* transport_socket, | 36 net::StreamSocket* transport_socket, |
37 const net::HostPortPair& host_and_port, | 37 const net::HostPortPair& host_and_port, |
38 const net::SSLConfig& ssl_config) { | 38 const net::SSLConfig& ssl_config) { |
39 return socket_factory_->CreateSSLClientSocket(transport_socket, | 39 return socket_factory_->CreateSSLClientSocket(transport_socket, |
40 host_and_port, | 40 host_and_port, |
41 ssl_config, | 41 ssl_config, |
42 NULL, | 42 NULL, |
43 cert_verifier_.get()); | 43 cert_verifier_.get()); |
44 } | 44 } |
45 | 45 |
46 net::ClientSocketFactory* socket_factory_; | 46 net::ClientSocketFactory* socket_factory_; |
(...skipping 18 matching lines...) Expand all Loading... |
65 | 65 |
66 TEST_F(SSLClientSocketTest, Connect) { | 66 TEST_F(SSLClientSocketTest, Connect) { |
67 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); | 67 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); |
68 ASSERT_TRUE(test_server.Start()); | 68 ASSERT_TRUE(test_server.Start()); |
69 | 69 |
70 net::AddressList addr; | 70 net::AddressList addr; |
71 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 71 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
72 | 72 |
73 TestCompletionCallback callback; | 73 TestCompletionCallback callback; |
74 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 74 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
75 net::ClientSocket* transport = new net::TCPClientSocket( | 75 net::StreamSocket* transport = new net::TCPClientSocket( |
76 addr, &log, net::NetLog::Source()); | 76 addr, &log, net::NetLog::Source()); |
77 int rv = transport->Connect(&callback); | 77 int rv = transport->Connect(&callback); |
78 if (rv == net::ERR_IO_PENDING) | 78 if (rv == net::ERR_IO_PENDING) |
79 rv = callback.WaitForResult(); | 79 rv = callback.WaitForResult(); |
80 EXPECT_EQ(net::OK, rv); | 80 EXPECT_EQ(net::OK, rv); |
81 | 81 |
82 scoped_ptr<net::SSLClientSocket> sock( | 82 scoped_ptr<net::SSLClientSocket> sock( |
83 socket_factory_->CreateSSLClientSocket( | 83 socket_factory_->CreateSSLClientSocket( |
84 transport, test_server.host_port_pair(), kDefaultSSLConfig, | 84 transport, test_server.host_port_pair(), kDefaultSSLConfig, |
85 NULL, cert_verifier_.get())); | 85 NULL, cert_verifier_.get())); |
(...skipping 21 matching lines...) Expand all Loading... |
107 net::TestServer::HTTPSOptions https_options( | 107 net::TestServer::HTTPSOptions https_options( |
108 net::TestServer::HTTPSOptions::CERT_EXPIRED); | 108 net::TestServer::HTTPSOptions::CERT_EXPIRED); |
109 net::TestServer test_server(https_options, FilePath()); | 109 net::TestServer test_server(https_options, FilePath()); |
110 ASSERT_TRUE(test_server.Start()); | 110 ASSERT_TRUE(test_server.Start()); |
111 | 111 |
112 net::AddressList addr; | 112 net::AddressList addr; |
113 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 113 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
114 | 114 |
115 TestCompletionCallback callback; | 115 TestCompletionCallback callback; |
116 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 116 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
117 net::ClientSocket* transport = new net::TCPClientSocket( | 117 net::StreamSocket* transport = new net::TCPClientSocket( |
118 addr, &log, net::NetLog::Source()); | 118 addr, &log, net::NetLog::Source()); |
119 int rv = transport->Connect(&callback); | 119 int rv = transport->Connect(&callback); |
120 if (rv == net::ERR_IO_PENDING) | 120 if (rv == net::ERR_IO_PENDING) |
121 rv = callback.WaitForResult(); | 121 rv = callback.WaitForResult(); |
122 EXPECT_EQ(net::OK, rv); | 122 EXPECT_EQ(net::OK, rv); |
123 | 123 |
124 scoped_ptr<net::SSLClientSocket> sock( | 124 scoped_ptr<net::SSLClientSocket> sock( |
125 CreateSSLClientSocket(transport, test_server.host_port_pair(), | 125 CreateSSLClientSocket(transport, test_server.host_port_pair(), |
126 kDefaultSSLConfig)); | 126 kDefaultSSLConfig)); |
127 | 127 |
(...skipping 22 matching lines...) Expand all Loading... |
150 net::TestServer::HTTPSOptions https_options( | 150 net::TestServer::HTTPSOptions https_options( |
151 net::TestServer::HTTPSOptions::CERT_MISMATCHED_NAME); | 151 net::TestServer::HTTPSOptions::CERT_MISMATCHED_NAME); |
152 net::TestServer test_server(https_options, FilePath()); | 152 net::TestServer test_server(https_options, FilePath()); |
153 ASSERT_TRUE(test_server.Start()); | 153 ASSERT_TRUE(test_server.Start()); |
154 | 154 |
155 net::AddressList addr; | 155 net::AddressList addr; |
156 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 156 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
157 | 157 |
158 TestCompletionCallback callback; | 158 TestCompletionCallback callback; |
159 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 159 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
160 net::ClientSocket* transport = new net::TCPClientSocket( | 160 net::StreamSocket* transport = new net::TCPClientSocket( |
161 addr, &log, net::NetLog::Source()); | 161 addr, &log, net::NetLog::Source()); |
162 int rv = transport->Connect(&callback); | 162 int rv = transport->Connect(&callback); |
163 if (rv == net::ERR_IO_PENDING) | 163 if (rv == net::ERR_IO_PENDING) |
164 rv = callback.WaitForResult(); | 164 rv = callback.WaitForResult(); |
165 EXPECT_EQ(net::OK, rv); | 165 EXPECT_EQ(net::OK, rv); |
166 | 166 |
167 scoped_ptr<net::SSLClientSocket> sock( | 167 scoped_ptr<net::SSLClientSocket> sock( |
168 CreateSSLClientSocket(transport, test_server.host_port_pair(), | 168 CreateSSLClientSocket(transport, test_server.host_port_pair(), |
169 kDefaultSSLConfig)); | 169 kDefaultSSLConfig)); |
170 | 170 |
(...skipping 24 matching lines...) Expand all Loading... |
195 net::TestServer::HTTPSOptions https_options; | 195 net::TestServer::HTTPSOptions https_options; |
196 https_options.request_client_certificate = true; | 196 https_options.request_client_certificate = true; |
197 net::TestServer test_server(https_options, FilePath()); | 197 net::TestServer test_server(https_options, FilePath()); |
198 ASSERT_TRUE(test_server.Start()); | 198 ASSERT_TRUE(test_server.Start()); |
199 | 199 |
200 net::AddressList addr; | 200 net::AddressList addr; |
201 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 201 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
202 | 202 |
203 TestCompletionCallback callback; | 203 TestCompletionCallback callback; |
204 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 204 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
205 net::ClientSocket* transport = new net::TCPClientSocket( | 205 net::StreamSocket* transport = new net::TCPClientSocket( |
206 addr, &log, net::NetLog::Source()); | 206 addr, &log, net::NetLog::Source()); |
207 int rv = transport->Connect(&callback); | 207 int rv = transport->Connect(&callback); |
208 if (rv == net::ERR_IO_PENDING) | 208 if (rv == net::ERR_IO_PENDING) |
209 rv = callback.WaitForResult(); | 209 rv = callback.WaitForResult(); |
210 EXPECT_EQ(net::OK, rv); | 210 EXPECT_EQ(net::OK, rv); |
211 | 211 |
212 scoped_ptr<net::SSLClientSocket> sock( | 212 scoped_ptr<net::SSLClientSocket> sock( |
213 CreateSSLClientSocket(transport, test_server.host_port_pair(), | 213 CreateSSLClientSocket(transport, test_server.host_port_pair(), |
214 kDefaultSSLConfig)); | 214 kDefaultSSLConfig)); |
215 | 215 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 net::TestServer::HTTPSOptions https_options; | 255 net::TestServer::HTTPSOptions https_options; |
256 https_options.request_client_certificate = true; | 256 https_options.request_client_certificate = true; |
257 net::TestServer test_server(https_options, FilePath()); | 257 net::TestServer test_server(https_options, FilePath()); |
258 ASSERT_TRUE(test_server.Start()); | 258 ASSERT_TRUE(test_server.Start()); |
259 | 259 |
260 net::AddressList addr; | 260 net::AddressList addr; |
261 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 261 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
262 | 262 |
263 TestCompletionCallback callback; | 263 TestCompletionCallback callback; |
264 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 264 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
265 net::ClientSocket* transport = new net::TCPClientSocket( | 265 net::StreamSocket* transport = new net::TCPClientSocket( |
266 addr, &log, net::NetLog::Source()); | 266 addr, &log, net::NetLog::Source()); |
267 int rv = transport->Connect(&callback); | 267 int rv = transport->Connect(&callback); |
268 if (rv == net::ERR_IO_PENDING) | 268 if (rv == net::ERR_IO_PENDING) |
269 rv = callback.WaitForResult(); | 269 rv = callback.WaitForResult(); |
270 EXPECT_EQ(net::OK, rv); | 270 EXPECT_EQ(net::OK, rv); |
271 | 271 |
272 net::SSLConfig ssl_config = kDefaultSSLConfig; | 272 net::SSLConfig ssl_config = kDefaultSSLConfig; |
273 ssl_config.send_client_cert = true; | 273 ssl_config.send_client_cert = true; |
274 ssl_config.client_cert = NULL; | 274 ssl_config.client_cert = NULL; |
275 | 275 |
(...skipping 29 matching lines...) Expand all Loading... |
305 // - Server sends data unexpectedly. | 305 // - Server sends data unexpectedly. |
306 | 306 |
307 TEST_F(SSLClientSocketTest, Read) { | 307 TEST_F(SSLClientSocketTest, Read) { |
308 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); | 308 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); |
309 ASSERT_TRUE(test_server.Start()); | 309 ASSERT_TRUE(test_server.Start()); |
310 | 310 |
311 net::AddressList addr; | 311 net::AddressList addr; |
312 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 312 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
313 | 313 |
314 TestCompletionCallback callback; | 314 TestCompletionCallback callback; |
315 net::ClientSocket* transport = new net::TCPClientSocket( | 315 net::StreamSocket* transport = new net::TCPClientSocket( |
316 addr, NULL, net::NetLog::Source()); | 316 addr, NULL, net::NetLog::Source()); |
317 int rv = transport->Connect(&callback); | 317 int rv = transport->Connect(&callback); |
318 if (rv == net::ERR_IO_PENDING) | 318 if (rv == net::ERR_IO_PENDING) |
319 rv = callback.WaitForResult(); | 319 rv = callback.WaitForResult(); |
320 EXPECT_EQ(net::OK, rv); | 320 EXPECT_EQ(net::OK, rv); |
321 | 321 |
322 scoped_ptr<net::SSLClientSocket> sock( | 322 scoped_ptr<net::SSLClientSocket> sock( |
323 CreateSSLClientSocket(transport, test_server.host_port_pair(), | 323 CreateSSLClientSocket(transport, test_server.host_port_pair(), |
324 kDefaultSSLConfig)); | 324 kDefaultSSLConfig)); |
325 | 325 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 TEST_F(SSLClientSocketTest, Read_FullDuplex) { | 360 TEST_F(SSLClientSocketTest, Read_FullDuplex) { |
361 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); | 361 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); |
362 ASSERT_TRUE(test_server.Start()); | 362 ASSERT_TRUE(test_server.Start()); |
363 | 363 |
364 net::AddressList addr; | 364 net::AddressList addr; |
365 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 365 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
366 | 366 |
367 TestCompletionCallback callback; // Used for everything except Write. | 367 TestCompletionCallback callback; // Used for everything except Write. |
368 TestCompletionCallback callback2; // Used for Write only. | 368 TestCompletionCallback callback2; // Used for Write only. |
369 | 369 |
370 net::ClientSocket* transport = new net::TCPClientSocket( | 370 net::StreamSocket* transport = new net::TCPClientSocket( |
371 addr, NULL, net::NetLog::Source()); | 371 addr, NULL, net::NetLog::Source()); |
372 int rv = transport->Connect(&callback); | 372 int rv = transport->Connect(&callback); |
373 if (rv == net::ERR_IO_PENDING) | 373 if (rv == net::ERR_IO_PENDING) |
374 rv = callback.WaitForResult(); | 374 rv = callback.WaitForResult(); |
375 EXPECT_EQ(net::OK, rv); | 375 EXPECT_EQ(net::OK, rv); |
376 | 376 |
377 scoped_ptr<net::SSLClientSocket> sock( | 377 scoped_ptr<net::SSLClientSocket> sock( |
378 socket_factory_->CreateSSLClientSocket( | 378 socket_factory_->CreateSSLClientSocket( |
379 transport, test_server.host_port_pair(), kDefaultSSLConfig, | 379 transport, test_server.host_port_pair(), kDefaultSSLConfig, |
380 NULL, cert_verifier_.get())); | 380 NULL, cert_verifier_.get())); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 } | 415 } |
416 | 416 |
417 TEST_F(SSLClientSocketTest, Read_SmallChunks) { | 417 TEST_F(SSLClientSocketTest, Read_SmallChunks) { |
418 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); | 418 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); |
419 ASSERT_TRUE(test_server.Start()); | 419 ASSERT_TRUE(test_server.Start()); |
420 | 420 |
421 net::AddressList addr; | 421 net::AddressList addr; |
422 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 422 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
423 | 423 |
424 TestCompletionCallback callback; | 424 TestCompletionCallback callback; |
425 net::ClientSocket* transport = new net::TCPClientSocket( | 425 net::StreamSocket* transport = new net::TCPClientSocket( |
426 addr, NULL, net::NetLog::Source()); | 426 addr, NULL, net::NetLog::Source()); |
427 int rv = transport->Connect(&callback); | 427 int rv = transport->Connect(&callback); |
428 if (rv == net::ERR_IO_PENDING) | 428 if (rv == net::ERR_IO_PENDING) |
429 rv = callback.WaitForResult(); | 429 rv = callback.WaitForResult(); |
430 EXPECT_EQ(net::OK, rv); | 430 EXPECT_EQ(net::OK, rv); |
431 | 431 |
432 scoped_ptr<net::SSLClientSocket> sock( | 432 scoped_ptr<net::SSLClientSocket> sock( |
433 CreateSSLClientSocket(transport, test_server.host_port_pair(), | 433 CreateSSLClientSocket(transport, test_server.host_port_pair(), |
434 kDefaultSSLConfig)); | 434 kDefaultSSLConfig)); |
435 | 435 |
(...skipping 29 matching lines...) Expand all Loading... |
465 } | 465 } |
466 | 466 |
467 TEST_F(SSLClientSocketTest, Read_Interrupted) { | 467 TEST_F(SSLClientSocketTest, Read_Interrupted) { |
468 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); | 468 net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); |
469 ASSERT_TRUE(test_server.Start()); | 469 ASSERT_TRUE(test_server.Start()); |
470 | 470 |
471 net::AddressList addr; | 471 net::AddressList addr; |
472 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 472 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
473 | 473 |
474 TestCompletionCallback callback; | 474 TestCompletionCallback callback; |
475 net::ClientSocket* transport = new net::TCPClientSocket( | 475 net::StreamSocket* transport = new net::TCPClientSocket( |
476 addr, NULL, net::NetLog::Source()); | 476 addr, NULL, net::NetLog::Source()); |
477 int rv = transport->Connect(&callback); | 477 int rv = transport->Connect(&callback); |
478 if (rv == net::ERR_IO_PENDING) | 478 if (rv == net::ERR_IO_PENDING) |
479 rv = callback.WaitForResult(); | 479 rv = callback.WaitForResult(); |
480 EXPECT_EQ(net::OK, rv); | 480 EXPECT_EQ(net::OK, rv); |
481 | 481 |
482 scoped_ptr<net::SSLClientSocket> sock( | 482 scoped_ptr<net::SSLClientSocket> sock( |
483 CreateSSLClientSocket(transport, test_server.host_port_pair(), | 483 CreateSSLClientSocket(transport, test_server.host_port_pair(), |
484 kDefaultSSLConfig)); | 484 kDefaultSSLConfig)); |
485 | 485 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
535 // All reads and writes complete synchronously (async=false). | 535 // All reads and writes complete synchronously (async=false). |
536 net::MockRead data_reads[] = { | 536 net::MockRead data_reads[] = { |
537 net::MockRead(false, reinterpret_cast<const char*>(application_data), | 537 net::MockRead(false, reinterpret_cast<const char*>(application_data), |
538 arraysize(application_data)), | 538 arraysize(application_data)), |
539 net::MockRead(false, net::OK), | 539 net::MockRead(false, net::OK), |
540 }; | 540 }; |
541 | 541 |
542 net::StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 542 net::StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
543 NULL, 0); | 543 NULL, 0); |
544 | 544 |
545 net::ClientSocket* transport = | 545 net::StreamSocket* transport = |
546 new net::MockTCPClientSocket(addr, NULL, &data); | 546 new net::MockTCPClientSocket(addr, NULL, &data); |
547 int rv = transport->Connect(&callback); | 547 int rv = transport->Connect(&callback); |
548 if (rv == net::ERR_IO_PENDING) | 548 if (rv == net::ERR_IO_PENDING) |
549 rv = callback.WaitForResult(); | 549 rv = callback.WaitForResult(); |
550 EXPECT_EQ(net::OK, rv); | 550 EXPECT_EQ(net::OK, rv); |
551 | 551 |
552 scoped_ptr<net::SSLClientSocket> sock( | 552 scoped_ptr<net::SSLClientSocket> sock( |
553 CreateSSLClientSocket(transport, test_server.host_port_pair(), | 553 CreateSSLClientSocket(transport, test_server.host_port_pair(), |
554 kDefaultSSLConfig)); | 554 kDefaultSSLConfig)); |
555 | 555 |
(...skipping 17 matching lines...) Expand all Loading... |
573 https_options.bulk_ciphers = | 573 https_options.bulk_ciphers = |
574 net::TestServer::HTTPSOptions::BULK_CIPHER_RC4; | 574 net::TestServer::HTTPSOptions::BULK_CIPHER_RC4; |
575 net::TestServer test_server(https_options, FilePath()); | 575 net::TestServer test_server(https_options, FilePath()); |
576 ASSERT_TRUE(test_server.Start()); | 576 ASSERT_TRUE(test_server.Start()); |
577 | 577 |
578 net::AddressList addr; | 578 net::AddressList addr; |
579 ASSERT_TRUE(test_server.GetAddressList(&addr)); | 579 ASSERT_TRUE(test_server.GetAddressList(&addr)); |
580 | 580 |
581 TestCompletionCallback callback; | 581 TestCompletionCallback callback; |
582 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); | 582 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); |
583 net::ClientSocket* transport = new net::TCPClientSocket( | 583 net::StreamSocket* transport = new net::TCPClientSocket( |
584 addr, &log, net::NetLog::Source()); | 584 addr, &log, net::NetLog::Source()); |
585 int rv = transport->Connect(&callback); | 585 int rv = transport->Connect(&callback); |
586 if (rv == net::ERR_IO_PENDING) | 586 if (rv == net::ERR_IO_PENDING) |
587 rv = callback.WaitForResult(); | 587 rv = callback.WaitForResult(); |
588 EXPECT_EQ(net::OK, rv); | 588 EXPECT_EQ(net::OK, rv); |
589 | 589 |
590 net::SSLConfig ssl_config; | 590 net::SSLConfig ssl_config; |
591 for (size_t i = 0; i < arraysize(kCiphersToDisable); ++i) | 591 for (size_t i = 0; i < arraysize(kCiphersToDisable); ++i) |
592 ssl_config.disabled_cipher_suites.push_back(kCiphersToDisable[i]); | 592 ssl_config.disabled_cipher_suites.push_back(kCiphersToDisable[i]); |
593 | 593 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
628 // to being an error such as a certificate name mismatch, which is | 628 // to being an error such as a certificate name mismatch, which is |
629 // client-only, the exact index of the SSL connect end depends on how | 629 // client-only, the exact index of the SSL connect end depends on how |
630 // quickly the test server closes the underlying socket. If the test server | 630 // quickly the test server closes the underlying socket. If the test server |
631 // closes before the IO message loop pumps messages, there may be a 0-byte | 631 // closes before the IO message loop pumps messages, there may be a 0-byte |
632 // Read event in the NetLog due to TCPClientSocket picking up the EOF. As a | 632 // Read event in the NetLog due to TCPClientSocket picking up the EOF. As a |
633 // result, the SSL connect end event will be the second-to-last entry, | 633 // result, the SSL connect end event will be the second-to-last entry, |
634 // rather than the last entry. | 634 // rather than the last entry. |
635 EXPECT_TRUE(LogContainsSSLConnectEndEvent(entries, -1) || | 635 EXPECT_TRUE(LogContainsSSLConnectEndEvent(entries, -1) || |
636 LogContainsSSLConnectEndEvent(entries, -2)); | 636 LogContainsSSLConnectEndEvent(entries, -2)); |
637 } | 637 } |
OLD | NEW |