OLD | NEW |
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2008 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/base/ssl_client_socket_mac.h" | 5 #include "net/base/ssl_client_socket_mac.h" |
6 | 6 |
7 #include "base/singleton.h" | 7 #include "base/singleton.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "net/base/net_errors.h" | 9 #include "net/base/net_errors.h" |
10 #include "net/base/ssl_info.h" | 10 #include "net/base/ssl_info.h" |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 DCHECK(next_state_ == STATE_NONE); | 272 DCHECK(next_state_ == STATE_NONE); |
273 DCHECK(!user_callback_); | 273 DCHECK(!user_callback_); |
274 | 274 |
275 next_state_ = STATE_CONNECT; | 275 next_state_ = STATE_CONNECT; |
276 int rv = DoLoop(OK); | 276 int rv = DoLoop(OK); |
277 if (rv == ERR_IO_PENDING) | 277 if (rv == ERR_IO_PENDING) |
278 user_callback_ = callback; | 278 user_callback_ = callback; |
279 return rv; | 279 return rv; |
280 } | 280 } |
281 | 281 |
282 int SSLClientSocketMac::ReconnectIgnoringLastError( | |
283 CompletionCallback* callback) { | |
284 // TODO(darin): implement me! | |
285 return ERR_FAILED; | |
286 } | |
287 | |
288 void SSLClientSocketMac::Disconnect() { | 282 void SSLClientSocketMac::Disconnect() { |
289 completed_handshake_ = false; | 283 completed_handshake_ = false; |
290 | 284 |
291 if (ssl_context_) { | 285 if (ssl_context_) { |
292 SSLClose(ssl_context_); | 286 SSLClose(ssl_context_); |
293 SSLDisposeContext(ssl_context_); | 287 SSLDisposeContext(ssl_context_); |
294 ssl_context_ = NULL; | 288 ssl_context_ = NULL; |
295 } | 289 } |
296 | 290 |
297 transport_->Disconnect(); | 291 transport_->Disconnect(); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 rv = ERR_UNEXPECTED; | 438 rv = ERR_UNEXPECTED; |
445 NOTREACHED() << "unexpected state"; | 439 NOTREACHED() << "unexpected state"; |
446 break; | 440 break; |
447 } | 441 } |
448 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE); | 442 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE); |
449 return rv; | 443 return rv; |
450 } | 444 } |
451 | 445 |
452 int SSLClientSocketMac::DoConnect() { | 446 int SSLClientSocketMac::DoConnect() { |
453 next_state_ = STATE_CONNECT_COMPLETE; | 447 next_state_ = STATE_CONNECT_COMPLETE; |
454 return transport_->Connect(&io_callback_); | 448 |
| 449 // The caller has to make sure that the transport socket is connected. If |
| 450 // it isn't, we will eventually fail when trying to negotiate an SSL session. |
| 451 // But we cannot call transport_->Connect(), as we do not know if there is |
| 452 // any proxy negotiation that needs to be performed prior to establishing |
| 453 // the SSL session. |
| 454 return OK; |
455 } | 455 } |
456 | 456 |
457 int SSLClientSocketMac::DoConnectComplete(int result) { | 457 int SSLClientSocketMac::DoConnectComplete(int result) { |
458 if (result < 0) | 458 if (result < 0) |
459 return result; | 459 return result; |
460 | 460 |
461 OSStatus status = noErr; | 461 OSStatus status = noErr; |
462 | 462 |
463 status = SSLNewContext(false, &ssl_context_); | 463 status = SSLNewContext(false, &ssl_context_); |
464 if (status) | 464 if (status) |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 | 757 |
758 if (rv < 0 && rv != ERR_IO_PENDING) { | 758 if (rv < 0 && rv != ERR_IO_PENDING) { |
759 return OSStatusFromNetError(rv); | 759 return OSStatusFromNetError(rv); |
760 } | 760 } |
761 | 761 |
762 // always lie to our caller | 762 // always lie to our caller |
763 return noErr; | 763 return noErr; |
764 } | 764 } |
765 | 765 |
766 } // namespace net | 766 } // namespace net |
OLD | NEW |