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_mac.h" | 5 #include "net/socket/ssl_client_socket_mac.h" |
6 | 6 |
7 #include <CoreServices/CoreServices.h> | 7 #include <CoreServices/CoreServices.h> |
8 #include <netdb.h> | 8 #include <netdb.h> |
9 #include <sys/socket.h> | 9 #include <sys/socket.h> |
10 #include <sys/types.h> | 10 #include <sys/types.h> |
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 | 524 |
525 SSLClientSocketMac::~SSLClientSocketMac() { | 525 SSLClientSocketMac::~SSLClientSocketMac() { |
526 Disconnect(); | 526 Disconnect(); |
527 } | 527 } |
528 | 528 |
529 int SSLClientSocketMac::Connect(CompletionCallback* callback) { | 529 int SSLClientSocketMac::Connect(CompletionCallback* callback) { |
530 DCHECK(transport_.get()); | 530 DCHECK(transport_.get()); |
531 DCHECK(next_handshake_state_ == STATE_NONE); | 531 DCHECK(next_handshake_state_ == STATE_NONE); |
532 DCHECK(!user_connect_callback_); | 532 DCHECK(!user_connect_callback_); |
533 | 533 |
534 net_log_.BeginEvent(NetLog::TYPE_SSL_CONNECT); | 534 net_log_.BeginEvent(NetLog::TYPE_SSL_CONNECT, NULL); |
535 | 535 |
536 int rv = InitializeSSLContext(); | 536 int rv = InitializeSSLContext(); |
537 if (rv != OK) { | 537 if (rv != OK) { |
538 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT); | 538 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, NULL); |
539 return rv; | 539 return rv; |
540 } | 540 } |
541 | 541 |
542 next_handshake_state_ = STATE_HANDSHAKE_START; | 542 next_handshake_state_ = STATE_HANDSHAKE_START; |
543 rv = DoHandshakeLoop(OK); | 543 rv = DoHandshakeLoop(OK); |
544 if (rv == ERR_IO_PENDING) { | 544 if (rv == ERR_IO_PENDING) { |
545 user_connect_callback_ = callback; | 545 user_connect_callback_ = callback; |
546 } else { | 546 } else { |
547 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT); | 547 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, NULL); |
548 } | 548 } |
549 return rv; | 549 return rv; |
550 } | 550 } |
551 | 551 |
552 void SSLClientSocketMac::Disconnect() { | 552 void SSLClientSocketMac::Disconnect() { |
553 completed_handshake_ = false; | 553 completed_handshake_ = false; |
554 | 554 |
555 if (ssl_context_) { | 555 if (ssl_context_) { |
556 SSLClose(ssl_context_); | 556 SSLClose(ssl_context_); |
557 SSLDisposeContext(ssl_context_); | 557 SSLDisposeContext(ssl_context_); |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
859 user_write_callback_ = NULL; | 859 user_write_callback_ = NULL; |
860 user_write_buf_ = NULL; | 860 user_write_buf_ = NULL; |
861 user_write_buf_len_ = 0; | 861 user_write_buf_len_ = 0; |
862 c->Run(rv); | 862 c->Run(rv); |
863 } | 863 } |
864 | 864 |
865 void SSLClientSocketMac::OnHandshakeIOComplete(int result) { | 865 void SSLClientSocketMac::OnHandshakeIOComplete(int result) { |
866 DCHECK(next_handshake_state_ != STATE_NONE); | 866 DCHECK(next_handshake_state_ != STATE_NONE); |
867 int rv = DoHandshakeLoop(result); | 867 int rv = DoHandshakeLoop(result); |
868 if (rv != ERR_IO_PENDING) { | 868 if (rv != ERR_IO_PENDING) { |
869 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT); | 869 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, NULL); |
870 DoConnectCallback(rv); | 870 DoConnectCallback(rv); |
871 } | 871 } |
872 } | 872 } |
873 | 873 |
874 void SSLClientSocketMac::OnTransportReadComplete(int result) { | 874 void SSLClientSocketMac::OnTransportReadComplete(int result) { |
875 if (result > 0) { | 875 if (result > 0) { |
876 recv_buffer_.insert(recv_buffer_.end(), | 876 recv_buffer_.insert(recv_buffer_.end(), |
877 read_io_buf_->data(), | 877 read_io_buf_->data(), |
878 read_io_buf_->data() + result); | 878 read_io_buf_->data() + result); |
879 } | 879 } |
880 read_io_buf_ = NULL; | 880 read_io_buf_ = NULL; |
881 | 881 |
882 if (next_handshake_state_ != STATE_NONE) { | 882 if (next_handshake_state_ != STATE_NONE) { |
883 int rv = DoHandshakeLoop(result); | 883 int rv = DoHandshakeLoop(result); |
884 if (rv != ERR_IO_PENDING) { | 884 if (rv != ERR_IO_PENDING) { |
885 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT); | 885 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, NULL); |
886 DoConnectCallback(rv); | 886 DoConnectCallback(rv); |
887 } | 887 } |
888 return; | 888 return; |
889 } | 889 } |
890 if (user_read_buf_) { | 890 if (user_read_buf_) { |
891 if (result < 0) { | 891 if (result < 0) { |
892 DoReadCallback(result); | 892 DoReadCallback(result); |
893 return; | 893 return; |
894 } | 894 } |
895 int rv = DoPayloadRead(); | 895 int rv = DoPayloadRead(); |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1293 if (rv < 0 && rv != ERR_IO_PENDING) { | 1293 if (rv < 0 && rv != ERR_IO_PENDING) { |
1294 us->write_io_buf_ = NULL; | 1294 us->write_io_buf_ = NULL; |
1295 return OSStatusFromNetError(rv); | 1295 return OSStatusFromNetError(rv); |
1296 } | 1296 } |
1297 | 1297 |
1298 // always lie to our caller | 1298 // always lie to our caller |
1299 return noErr; | 1299 return noErr; |
1300 } | 1300 } |
1301 | 1301 |
1302 } // namespace net | 1302 } // namespace net |
OLD | NEW |