Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Side by Side Diff: net/socket/ssl_client_socket_unittest.cc

Issue 4339001: Correctly handle SSL Client Authentication requests when connecting... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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( 69 socket_factory_->CreateSSLClientSocket(
70 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 70 transport, test_server.host_port_pair(), kDefaultSSLConfig, NULL));
71 NULL));
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::ERR_IO_PENDING) 77 if (rv == net::ERR_IO_PENDING)
79 rv = callback.WaitForResult(); 78 rv = callback.WaitForResult();
80 EXPECT_EQ(net::OK, rv); 79 EXPECT_EQ(net::OK, rv);
81 EXPECT_TRUE(sock->IsConnected()); 80 EXPECT_TRUE(sock->IsConnected());
(...skipping 16 matching lines...) Expand all
98 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); 97 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
99 net::ClientSocket* transport = new net::TCPClientSocket( 98 net::ClientSocket* transport = new net::TCPClientSocket(
100 addr, &log, net::NetLog::Source()); 99 addr, &log, net::NetLog::Source());
101 int rv = transport->Connect(&callback); 100 int rv = transport->Connect(&callback);
102 if (rv == net::ERR_IO_PENDING) 101 if (rv == net::ERR_IO_PENDING)
103 rv = callback.WaitForResult(); 102 rv = callback.WaitForResult();
104 EXPECT_EQ(net::OK, rv); 103 EXPECT_EQ(net::OK, rv);
105 104
106 scoped_ptr<net::SSLClientSocket> sock( 105 scoped_ptr<net::SSLClientSocket> sock(
107 socket_factory_->CreateSSLClientSocket( 106 socket_factory_->CreateSSLClientSocket(
108 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 107 transport, test_server.host_port_pair(), kDefaultSSLConfig, NULL));
109 NULL));
110 108
111 EXPECT_FALSE(sock->IsConnected()); 109 EXPECT_FALSE(sock->IsConnected());
112 110
113 rv = sock->Connect(&callback); 111 rv = sock->Connect(&callback);
114 EXPECT_TRUE(net::LogContainsBeginEvent( 112 EXPECT_TRUE(net::LogContainsBeginEvent(
115 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 113 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
116 if (rv == net::ERR_IO_PENDING) 114 if (rv == net::ERR_IO_PENDING)
117 rv = callback.WaitForResult(); 115 rv = callback.WaitForResult();
118 116
119 EXPECT_EQ(net::ERR_CERT_DATE_INVALID, rv); 117 EXPECT_EQ(net::ERR_CERT_DATE_INVALID, rv);
(...skipping 18 matching lines...) Expand all
138 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); 136 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
139 net::ClientSocket* transport = new net::TCPClientSocket( 137 net::ClientSocket* transport = new net::TCPClientSocket(
140 addr, &log, net::NetLog::Source()); 138 addr, &log, net::NetLog::Source());
141 int rv = transport->Connect(&callback); 139 int rv = transport->Connect(&callback);
142 if (rv == net::ERR_IO_PENDING) 140 if (rv == net::ERR_IO_PENDING)
143 rv = callback.WaitForResult(); 141 rv = callback.WaitForResult();
144 EXPECT_EQ(net::OK, rv); 142 EXPECT_EQ(net::OK, rv);
145 143
146 scoped_ptr<net::SSLClientSocket> sock( 144 scoped_ptr<net::SSLClientSocket> sock(
147 socket_factory_->CreateSSLClientSocket( 145 socket_factory_->CreateSSLClientSocket(
148 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 146 transport, test_server.host_port_pair(), kDefaultSSLConfig, NULL));
149 NULL));
150 147
151 EXPECT_FALSE(sock->IsConnected()); 148 EXPECT_FALSE(sock->IsConnected());
152 149
153 rv = sock->Connect(&callback); 150 rv = sock->Connect(&callback);
154 151
155 EXPECT_TRUE(net::LogContainsBeginEvent( 152 EXPECT_TRUE(net::LogContainsBeginEvent(
156 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 153 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
157 if (rv == net::ERR_IO_PENDING) 154 if (rv == net::ERR_IO_PENDING)
158 rv = callback.WaitForResult(); 155 rv = callback.WaitForResult();
159 156
(...skipping 22 matching lines...) Expand all
182 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded); 179 net::CapturingNetLog log(net::CapturingNetLog::kUnbounded);
183 net::ClientSocket* transport = new net::TCPClientSocket( 180 net::ClientSocket* transport = new net::TCPClientSocket(
184 addr, &log, net::NetLog::Source()); 181 addr, &log, net::NetLog::Source());
185 int rv = transport->Connect(&callback); 182 int rv = transport->Connect(&callback);
186 if (rv == net::ERR_IO_PENDING) 183 if (rv == net::ERR_IO_PENDING)
187 rv = callback.WaitForResult(); 184 rv = callback.WaitForResult();
188 EXPECT_EQ(net::OK, rv); 185 EXPECT_EQ(net::OK, rv);
189 186
190 scoped_ptr<net::SSLClientSocket> sock( 187 scoped_ptr<net::SSLClientSocket> sock(
191 socket_factory_->CreateSSLClientSocket( 188 socket_factory_->CreateSSLClientSocket(
192 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 189 transport, test_server.host_port_pair(), kDefaultSSLConfig, NULL));
193 NULL));
194 190
195 EXPECT_FALSE(sock->IsConnected()); 191 EXPECT_FALSE(sock->IsConnected());
196 192
197 rv = sock->Connect(&callback); 193 rv = sock->Connect(&callback);
198 EXPECT_TRUE(net::LogContainsBeginEvent( 194 EXPECT_TRUE(net::LogContainsBeginEvent(
199 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 195 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
200 if (rv == net::ERR_IO_PENDING) 196 if (rv == net::ERR_IO_PENDING)
201 rv = callback.WaitForResult(); 197 rv = callback.WaitForResult();
202 198
203 EXPECT_EQ(net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED, rv); 199 EXPECT_EQ(net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED, rv);
(...skipping 21 matching lines...) Expand all
225 if (rv == net::ERR_IO_PENDING) 221 if (rv == net::ERR_IO_PENDING)
226 rv = callback.WaitForResult(); 222 rv = callback.WaitForResult();
227 EXPECT_EQ(net::OK, rv); 223 EXPECT_EQ(net::OK, rv);
228 224
229 net::SSLConfig ssl_config = kDefaultSSLConfig; 225 net::SSLConfig ssl_config = kDefaultSSLConfig;
230 ssl_config.send_client_cert = true; 226 ssl_config.send_client_cert = true;
231 ssl_config.client_cert = NULL; 227 ssl_config.client_cert = NULL;
232 228
233 scoped_ptr<net::SSLClientSocket> sock( 229 scoped_ptr<net::SSLClientSocket> sock(
234 socket_factory_->CreateSSLClientSocket( 230 socket_factory_->CreateSSLClientSocket(
235 transport, test_server.host_port_pair().host(), ssl_config, 231 transport, test_server.host_port_pair(), ssl_config, NULL));
236 NULL));
237 232
238 EXPECT_FALSE(sock->IsConnected()); 233 EXPECT_FALSE(sock->IsConnected());
239 234
240 // Our test server accepts certificate-less connections. 235 // Our test server accepts certificate-less connections.
241 // TODO(davidben): Add a test which requires them and verify the error. 236 // TODO(davidben): Add a test which requires them and verify the error.
242 rv = sock->Connect(&callback); 237 rv = sock->Connect(&callback);
243 EXPECT_TRUE(net::LogContainsBeginEvent( 238 EXPECT_TRUE(net::LogContainsBeginEvent(
244 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 239 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
245 if (rv == net::ERR_IO_PENDING) 240 if (rv == net::ERR_IO_PENDING)
246 rv = callback.WaitForResult(); 241 rv = callback.WaitForResult();
(...skipping 21 matching lines...) Expand all
268 TestCompletionCallback callback; 263 TestCompletionCallback callback;
269 net::ClientSocket* transport = new net::TCPClientSocket( 264 net::ClientSocket* transport = new net::TCPClientSocket(
270 addr, NULL, net::NetLog::Source()); 265 addr, NULL, net::NetLog::Source());
271 int rv = transport->Connect(&callback); 266 int rv = transport->Connect(&callback);
272 if (rv == net::ERR_IO_PENDING) 267 if (rv == net::ERR_IO_PENDING)
273 rv = callback.WaitForResult(); 268 rv = callback.WaitForResult();
274 EXPECT_EQ(net::OK, rv); 269 EXPECT_EQ(net::OK, rv);
275 270
276 scoped_ptr<net::SSLClientSocket> sock( 271 scoped_ptr<net::SSLClientSocket> sock(
277 socket_factory_->CreateSSLClientSocket( 272 socket_factory_->CreateSSLClientSocket(
278 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 273 transport, test_server.host_port_pair(), kDefaultSSLConfig, NULL));
279 NULL));
280 274
281 rv = sock->Connect(&callback); 275 rv = sock->Connect(&callback);
282 if (rv == net::ERR_IO_PENDING) 276 if (rv == net::ERR_IO_PENDING)
283 rv = callback.WaitForResult(); 277 rv = callback.WaitForResult();
284 EXPECT_EQ(net::OK, rv); 278 EXPECT_EQ(net::OK, rv);
285 EXPECT_TRUE(sock->IsConnected()); 279 EXPECT_TRUE(sock->IsConnected());
286 280
287 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 281 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
288 scoped_refptr<net::IOBuffer> request_buffer( 282 scoped_refptr<net::IOBuffer> request_buffer(
289 new net::IOBuffer(arraysize(request_text) - 1)); 283 new net::IOBuffer(arraysize(request_text) - 1));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 318
325 net::ClientSocket* transport = new net::TCPClientSocket( 319 net::ClientSocket* transport = new net::TCPClientSocket(
326 addr, NULL, net::NetLog::Source()); 320 addr, NULL, net::NetLog::Source());
327 int rv = transport->Connect(&callback); 321 int rv = transport->Connect(&callback);
328 if (rv == net::ERR_IO_PENDING) 322 if (rv == net::ERR_IO_PENDING)
329 rv = callback.WaitForResult(); 323 rv = callback.WaitForResult();
330 EXPECT_EQ(net::OK, rv); 324 EXPECT_EQ(net::OK, rv);
331 325
332 scoped_ptr<net::SSLClientSocket> sock( 326 scoped_ptr<net::SSLClientSocket> sock(
333 socket_factory_->CreateSSLClientSocket( 327 socket_factory_->CreateSSLClientSocket(
334 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 328 transport, test_server.host_port_pair(), kDefaultSSLConfig, NULL));
335 NULL));
336 329
337 rv = sock->Connect(&callback); 330 rv = sock->Connect(&callback);
338 if (rv == net::ERR_IO_PENDING) 331 if (rv == net::ERR_IO_PENDING)
339 rv = callback.WaitForResult(); 332 rv = callback.WaitForResult();
340 EXPECT_EQ(net::OK, rv); 333 EXPECT_EQ(net::OK, rv);
341 EXPECT_TRUE(sock->IsConnected()); 334 EXPECT_TRUE(sock->IsConnected());
342 335
343 // Issue a "hanging" Read first. 336 // Issue a "hanging" Read first.
344 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(4096)); 337 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(4096));
345 rv = sock->Read(buf, 4096, &callback); 338 rv = sock->Read(buf, 4096, &callback);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 TestCompletionCallback callback; 372 TestCompletionCallback callback;
380 net::ClientSocket* transport = new net::TCPClientSocket( 373 net::ClientSocket* transport = new net::TCPClientSocket(
381 addr, NULL, net::NetLog::Source()); 374 addr, NULL, net::NetLog::Source());
382 int rv = transport->Connect(&callback); 375 int rv = transport->Connect(&callback);
383 if (rv == net::ERR_IO_PENDING) 376 if (rv == net::ERR_IO_PENDING)
384 rv = callback.WaitForResult(); 377 rv = callback.WaitForResult();
385 EXPECT_EQ(net::OK, rv); 378 EXPECT_EQ(net::OK, rv);
386 379
387 scoped_ptr<net::SSLClientSocket> sock( 380 scoped_ptr<net::SSLClientSocket> sock(
388 socket_factory_->CreateSSLClientSocket( 381 socket_factory_->CreateSSLClientSocket(
389 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 382 transport, test_server.host_port_pair(), kDefaultSSLConfig, NULL));
390 NULL));
391 383
392 rv = sock->Connect(&callback); 384 rv = sock->Connect(&callback);
393 if (rv == net::ERR_IO_PENDING) 385 if (rv == net::ERR_IO_PENDING)
394 rv = callback.WaitForResult(); 386 rv = callback.WaitForResult();
395 EXPECT_EQ(net::OK, rv); 387 EXPECT_EQ(net::OK, rv);
396 388
397 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 389 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
398 scoped_refptr<net::IOBuffer> request_buffer( 390 scoped_refptr<net::IOBuffer> request_buffer(
399 new net::IOBuffer(arraysize(request_text) - 1)); 391 new net::IOBuffer(arraysize(request_text) - 1));
400 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); 392 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
(...skipping 29 matching lines...) Expand all
430 TestCompletionCallback callback; 422 TestCompletionCallback callback;
431 net::ClientSocket* transport = new net::TCPClientSocket( 423 net::ClientSocket* transport = new net::TCPClientSocket(
432 addr, NULL, net::NetLog::Source()); 424 addr, NULL, net::NetLog::Source());
433 int rv = transport->Connect(&callback); 425 int rv = transport->Connect(&callback);
434 if (rv == net::ERR_IO_PENDING) 426 if (rv == net::ERR_IO_PENDING)
435 rv = callback.WaitForResult(); 427 rv = callback.WaitForResult();
436 EXPECT_EQ(net::OK, rv); 428 EXPECT_EQ(net::OK, rv);
437 429
438 scoped_ptr<net::SSLClientSocket> sock( 430 scoped_ptr<net::SSLClientSocket> sock(
439 socket_factory_->CreateSSLClientSocket( 431 socket_factory_->CreateSSLClientSocket(
440 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 432 transport, test_server.host_port_pair(), kDefaultSSLConfig, NULL));
441 NULL));
442 433
443 rv = sock->Connect(&callback); 434 rv = sock->Connect(&callback);
444 if (rv == net::ERR_IO_PENDING) 435 if (rv == net::ERR_IO_PENDING)
445 rv = callback.WaitForResult(); 436 rv = callback.WaitForResult();
446 EXPECT_EQ(net::OK, rv); 437 EXPECT_EQ(net::OK, rv);
447 438
448 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 439 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
449 scoped_refptr<net::IOBuffer> request_buffer( 440 scoped_refptr<net::IOBuffer> request_buffer(
450 new net::IOBuffer(arraysize(request_text) - 1)); 441 new net::IOBuffer(arraysize(request_text) - 1));
451 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); 442 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 492
502 net::ClientSocket* transport = 493 net::ClientSocket* transport =
503 new net::MockTCPClientSocket(addr, NULL, &data); 494 new net::MockTCPClientSocket(addr, NULL, &data);
504 int rv = transport->Connect(&callback); 495 int rv = transport->Connect(&callback);
505 if (rv == net::ERR_IO_PENDING) 496 if (rv == net::ERR_IO_PENDING)
506 rv = callback.WaitForResult(); 497 rv = callback.WaitForResult();
507 EXPECT_EQ(net::OK, rv); 498 EXPECT_EQ(net::OK, rv);
508 499
509 scoped_ptr<net::SSLClientSocket> sock( 500 scoped_ptr<net::SSLClientSocket> sock(
510 socket_factory_->CreateSSLClientSocket( 501 socket_factory_->CreateSSLClientSocket(
511 transport, test_server.host_port_pair().host(), kDefaultSSLConfig, 502 transport, test_server.host_port_pair(), kDefaultSSLConfig, NULL));
512 NULL));
513 503
514 rv = sock->Connect(&callback); 504 rv = sock->Connect(&callback);
515 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, rv); 505 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, rv);
516 } 506 }
517 507
518 #if defined(USE_OPENSSL) 508 #if defined(USE_OPENSSL)
519 // TODO(rsleevi): Not implemented for Schannel or OpenSSL. Schannel is 509 // TODO(rsleevi): Not implemented for Schannel or OpenSSL. Schannel is
520 // controlled by the SSL client socket factory, rather than a define, so it 510 // controlled by the SSL client socket factory, rather than a define, so it
521 // cannot be conditionally disabled here. As Schannel is only used when 511 // cannot be conditionally disabled here. As Schannel is only used when
522 // performing client authentication, it will not be tested here. 512 // performing client authentication, it will not be tested here.
(...skipping 28 matching lines...) Expand all
551 if (rv == net::ERR_IO_PENDING) 541 if (rv == net::ERR_IO_PENDING)
552 rv = callback.WaitForResult(); 542 rv = callback.WaitForResult();
553 EXPECT_EQ(net::OK, rv); 543 EXPECT_EQ(net::OK, rv);
554 544
555 net::SSLConfig ssl_config; 545 net::SSLConfig ssl_config;
556 for (size_t i = 0; i < arraysize(kCiphersToDisable); ++i) 546 for (size_t i = 0; i < arraysize(kCiphersToDisable); ++i)
557 ssl_config.disabled_cipher_suites.push_back(kCiphersToDisable[i]); 547 ssl_config.disabled_cipher_suites.push_back(kCiphersToDisable[i]);
558 548
559 scoped_ptr<net::SSLClientSocket> sock( 549 scoped_ptr<net::SSLClientSocket> sock(
560 socket_factory_->CreateSSLClientSocket( 550 socket_factory_->CreateSSLClientSocket(
561 transport, test_server.host_port_pair().host(), 551 transport, test_server.host_port_pair(), ssl_config, NULL));
562 ssl_config, NULL));
563 552
564 EXPECT_FALSE(sock->IsConnected()); 553 EXPECT_FALSE(sock->IsConnected());
565 554
566 rv = sock->Connect(&callback); 555 rv = sock->Connect(&callback);
567 EXPECT_TRUE(net::LogContainsBeginEvent( 556 EXPECT_TRUE(net::LogContainsBeginEvent(
568 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT)); 557 log.entries(), 5, net::NetLog::TYPE_SSL_CONNECT));
569 558
570 // NSS has special handling that maps a handshake_failure alert received 559 // NSS has special handling that maps a handshake_failure alert received
571 // immediately after a client_hello to be a mismatched cipher suite error, 560 // immediately after a client_hello to be a mismatched cipher suite error,
572 // leading to ERR_SSL_VERSION_OR_CIPHER_MISMATCH. When using OpenSSL or 561 // leading to ERR_SSL_VERSION_OR_CIPHER_MISMATCH. When using OpenSSL or
573 // Secure Transport (OS X), the handshake_failure is bubbled up without any 562 // Secure Transport (OS X), the handshake_failure is bubbled up without any
574 // interpretation, leading to ERR_SSL_PROTOCOL_ERROR. Either way, a failure 563 // interpretation, leading to ERR_SSL_PROTOCOL_ERROR. Either way, a failure
575 // indicates that no cipher suite was negotiated with the test server. 564 // indicates that no cipher suite was negotiated with the test server.
576 if (rv == net::ERR_IO_PENDING) 565 if (rv == net::ERR_IO_PENDING)
577 rv = callback.WaitForResult(); 566 rv = callback.WaitForResult();
578 EXPECT_TRUE(rv == net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH || 567 EXPECT_TRUE(rv == net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH ||
579 rv == net::ERR_SSL_PROTOCOL_ERROR); 568 rv == net::ERR_SSL_PROTOCOL_ERROR);
580 // The exact ordering differs between SSLClientSocketNSS (which issues an 569 // The exact ordering differs between SSLClientSocketNSS (which issues an
581 // extra read) and SSLClientSocketMac (which does not). Just make sure the 570 // extra read) and SSLClientSocketMac (which does not). Just make sure the
582 // error appears somewhere in the log. 571 // error appears somewhere in the log.
583 net::ExpectLogContainsSomewhere(log.entries(), 0, 572 net::ExpectLogContainsSomewhere(log.entries(), 0,
584 net::NetLog::TYPE_SSL_HANDSHAKE_ERROR, 573 net::NetLog::TYPE_SSL_HANDSHAKE_ERROR,
585 net::NetLog::PHASE_NONE); 574 net::NetLog::PHASE_NONE);
586 575
587 // We cannot test sock->IsConnected(), as the NSS implementation disconnects 576 // We cannot test sock->IsConnected(), as the NSS implementation disconnects
588 // the socket when it encounters an error, whereas other implementations 577 // the socket when it encounters an error, whereas other implementations
589 // leave it connected. 578 // leave it connected.
590 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1)); 579 EXPECT_TRUE(LogContainsSSLConnectEndEvent(log.entries(), -1));
591 } 580 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698