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

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

Issue 8889036: Revert 113699 - base::Bind: Convert Socket::Write. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years 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
« no previous file with comments | « net/socket/ssl_client_socket_win.h ('k') | net/socket/ssl_server_socket_nss.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_win.h" 5 #include "net/socket/ssl_client_socket_win.h"
6 6
7 #include <schnlsp.h> 7 #include <schnlsp.h>
8 #include <map> 8 #include <map>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 ALLOW_THIS_IN_INITIALIZER_LIST( 393 ALLOW_THIS_IN_INITIALIZER_LIST(
394 read_callback_(this, &SSLClientSocketWin::OnReadComplete)), 394 read_callback_(this, &SSLClientSocketWin::OnReadComplete)),
395 ALLOW_THIS_IN_INITIALIZER_LIST( 395 ALLOW_THIS_IN_INITIALIZER_LIST(
396 write_callback_(this, &SSLClientSocketWin::OnWriteComplete)), 396 write_callback_(this, &SSLClientSocketWin::OnWriteComplete)),
397 transport_(transport_socket), 397 transport_(transport_socket),
398 host_and_port_(host_and_port), 398 host_and_port_(host_and_port),
399 ssl_config_(ssl_config), 399 ssl_config_(ssl_config),
400 old_user_connect_callback_(NULL), 400 old_user_connect_callback_(NULL),
401 old_user_read_callback_(NULL), 401 old_user_read_callback_(NULL),
402 user_read_buf_len_(0), 402 user_read_buf_len_(0),
403 old_user_write_callback_(NULL), 403 user_write_callback_(NULL),
404 user_write_buf_len_(0), 404 user_write_buf_len_(0),
405 next_state_(STATE_NONE), 405 next_state_(STATE_NONE),
406 cert_verifier_(context.cert_verifier), 406 cert_verifier_(context.cert_verifier),
407 creds_(NULL), 407 creds_(NULL),
408 isc_status_(SEC_E_OK), 408 isc_status_(SEC_E_OK),
409 payload_send_buffer_len_(0), 409 payload_send_buffer_len_(0),
410 bytes_sent_(0), 410 bytes_sent_(0),
411 decrypted_ptr_(NULL), 411 decrypted_ptr_(NULL),
412 bytes_decrypted_(0), 412 bytes_decrypted_(0),
413 received_ptr_(NULL), 413 received_ptr_(NULL),
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 } else { 862 } else {
863 user_read_buf_ = NULL; 863 user_read_buf_ = NULL;
864 user_read_buf_len_ = 0; 864 user_read_buf_len_ = 0;
865 } 865 }
866 return rv; 866 return rv;
867 } 867 }
868 868
869 int SSLClientSocketWin::Write(IOBuffer* buf, int buf_len, 869 int SSLClientSocketWin::Write(IOBuffer* buf, int buf_len,
870 OldCompletionCallback* callback) { 870 OldCompletionCallback* callback) {
871 DCHECK(completed_handshake()); 871 DCHECK(completed_handshake());
872 DCHECK(!old_user_write_callback_ && user_write_callback_.is_null()); 872 DCHECK(!user_write_callback_);
873 873
874 DCHECK(!user_write_buf_); 874 DCHECK(!user_write_buf_);
875 user_write_buf_ = buf; 875 user_write_buf_ = buf;
876 user_write_buf_len_ = buf_len; 876 user_write_buf_len_ = buf_len;
877 877
878 int rv = DoPayloadEncrypt(); 878 int rv = DoPayloadEncrypt();
879 if (rv != OK) 879 if (rv != OK)
880 return rv; 880 return rv;
881 881
882 rv = DoPayloadWrite(); 882 rv = DoPayloadWrite();
883 if (rv == ERR_IO_PENDING) { 883 if (rv == ERR_IO_PENDING) {
884 old_user_write_callback_ = callback;
885 } else {
886 user_write_buf_ = NULL;
887 user_write_buf_len_ = 0;
888 }
889 return rv;
890 }
891 int SSLClientSocketWin::Write(IOBuffer* buf, int buf_len,
892 const CompletionCallback& callback) {
893 DCHECK(completed_handshake());
894 DCHECK(!old_user_write_callback_ && user_write_callback_.is_null());
895
896 DCHECK(!user_write_buf_);
897 user_write_buf_ = buf;
898 user_write_buf_len_ = buf_len;
899
900 int rv = DoPayloadEncrypt();
901 if (rv != OK)
902 return rv;
903
904 rv = DoPayloadWrite();
905 if (rv == ERR_IO_PENDING) {
906 user_write_callback_ = callback; 884 user_write_callback_ = callback;
907 } else { 885 } else {
908 user_write_buf_ = NULL; 886 user_write_buf_ = NULL;
909 user_write_buf_len_ = 0; 887 user_write_buf_len_ = 0;
910 } 888 }
911 return rv; 889 return rv;
912 } 890 }
913 891
914 bool SSLClientSocketWin::SetReceiveBufferSize(int32 size) { 892 bool SSLClientSocketWin::SetReceiveBufferSize(int32 size) {
915 return transport_->socket()->SetReceiveBufferSize(size); 893 return transport_->socket()->SetReceiveBufferSize(size);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 c.Run(result); 957 c.Run(result);
980 } 958 }
981 } 959 }
982 } 960 }
983 961
984 void SSLClientSocketWin::OnWriteComplete(int result) { 962 void SSLClientSocketWin::OnWriteComplete(int result) {
985 DCHECK(completed_handshake()); 963 DCHECK(completed_handshake());
986 964
987 int rv = DoPayloadWriteComplete(result); 965 int rv = DoPayloadWriteComplete(result);
988 if (rv != ERR_IO_PENDING) { 966 if (rv != ERR_IO_PENDING) {
989 DCHECK(old_user_write_callback_ || !user_write_callback_.is_null()); 967 DCHECK(user_write_callback_);
990 if (old_user_write_callback_) { 968 OldCompletionCallback* c = user_write_callback_;
991 OldCompletionCallback* c = old_user_write_callback_; 969 user_write_callback_ = NULL;
992 old_user_write_callback_ = NULL; 970 user_write_buf_ = NULL;
993 user_write_buf_ = NULL; 971 user_write_buf_len_ = 0;
994 user_write_buf_len_ = 0; 972 c->Run(rv);
995 c->Run(rv);
996 } else {
997 CompletionCallback c = user_write_callback_;
998 user_write_callback_.Reset();
999 user_write_buf_ = NULL;
1000 user_write_buf_len_ = 0;
1001 c.Run(rv);
1002 }
1003 } 973 }
1004 } 974 }
1005 975
1006 976
1007 int SSLClientSocketWin::DoLoop(int last_io_result) { 977 int SSLClientSocketWin::DoLoop(int last_io_result) {
1008 DCHECK(next_state_ != STATE_NONE); 978 DCHECK(next_state_ != STATE_NONE);
1009 int rv = last_io_result; 979 int rv = last_io_result;
1010 do { 980 do {
1011 State state = next_state_; 981 State state = next_state_;
1012 next_state_ = STATE_NONE; 982 next_state_ = STATE_NONE;
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
1685 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD2_CA); 1655 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD2_CA);
1686 } 1656 }
1687 1657
1688 void SSLClientSocketWin::FreeSendBuffer() { 1658 void SSLClientSocketWin::FreeSendBuffer() {
1689 SECURITY_STATUS status = FreeContextBuffer(send_buffer_.pvBuffer); 1659 SECURITY_STATUS status = FreeContextBuffer(send_buffer_.pvBuffer);
1690 DCHECK(status == SEC_E_OK); 1660 DCHECK(status == SEC_E_OK);
1691 memset(&send_buffer_, 0, sizeof(send_buffer_)); 1661 memset(&send_buffer_, 0, sizeof(send_buffer_));
1692 } 1662 }
1693 1663
1694 } // namespace net 1664 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_win.h ('k') | net/socket/ssl_server_socket_nss.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698