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

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

Issue 8831001: base::Bind: Convert Socket::Write. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix alignment. 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 user_write_callback_(NULL), 403 old_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(!user_write_callback_); 872 DCHECK(!old_user_write_callback_ && user_write_callback_.is_null());
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;
877
878 int rv = DoPayloadEncrypt();
879 if (rv != OK)
880 return rv;
881
882 rv = DoPayloadWrite();
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;
876 user_write_buf_len_ = buf_len; 898 user_write_buf_len_ = buf_len;
877 899
878 int rv = DoPayloadEncrypt(); 900 int rv = DoPayloadEncrypt();
879 if (rv != OK) 901 if (rv != OK)
880 return rv; 902 return rv;
881 903
882 rv = DoPayloadWrite(); 904 rv = DoPayloadWrite();
883 if (rv == ERR_IO_PENDING) { 905 if (rv == ERR_IO_PENDING) {
884 user_write_callback_ = callback; 906 user_write_callback_ = callback;
885 } else { 907 } else {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 c.Run(result); 979 c.Run(result);
958 } 980 }
959 } 981 }
960 } 982 }
961 983
962 void SSLClientSocketWin::OnWriteComplete(int result) { 984 void SSLClientSocketWin::OnWriteComplete(int result) {
963 DCHECK(completed_handshake()); 985 DCHECK(completed_handshake());
964 986
965 int rv = DoPayloadWriteComplete(result); 987 int rv = DoPayloadWriteComplete(result);
966 if (rv != ERR_IO_PENDING) { 988 if (rv != ERR_IO_PENDING) {
967 DCHECK(user_write_callback_); 989 DCHECK(old_user_write_callback_ || !user_write_callback_.is_null());
968 OldCompletionCallback* c = user_write_callback_; 990 if (old_user_write_callback_) {
969 user_write_callback_ = NULL; 991 OldCompletionCallback* c = old_user_write_callback_;
970 user_write_buf_ = NULL; 992 old_user_write_callback_ = NULL;
971 user_write_buf_len_ = 0; 993 user_write_buf_ = NULL;
972 c->Run(rv); 994 user_write_buf_len_ = 0;
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 }
973 } 1003 }
974 } 1004 }
975 1005
976 1006
977 int SSLClientSocketWin::DoLoop(int last_io_result) { 1007 int SSLClientSocketWin::DoLoop(int last_io_result) {
978 DCHECK(next_state_ != STATE_NONE); 1008 DCHECK(next_state_ != STATE_NONE);
979 int rv = last_io_result; 1009 int rv = last_io_result;
980 do { 1010 do {
981 State state = next_state_; 1011 State state = next_state_;
982 next_state_ = STATE_NONE; 1012 next_state_ = STATE_NONE;
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
1655 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD2_CA); 1685 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD2_CA);
1656 } 1686 }
1657 1687
1658 void SSLClientSocketWin::FreeSendBuffer() { 1688 void SSLClientSocketWin::FreeSendBuffer() {
1659 SECURITY_STATUS status = FreeContextBuffer(send_buffer_.pvBuffer); 1689 SECURITY_STATUS status = FreeContextBuffer(send_buffer_.pvBuffer);
1660 DCHECK(status == SEC_E_OK); 1690 DCHECK(status == SEC_E_OK);
1661 memset(&send_buffer_, 0, sizeof(send_buffer_)); 1691 memset(&send_buffer_, 0, sizeof(send_buffer_));
1662 } 1692 }
1663 1693
1664 } // namespace net 1694 } // 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