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

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

Issue 8801005: base::Bind: Convert Socket::Read. (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
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_server_socket_nss.h" 5 #include "net/socket/ssl_server_socket_nss.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <winsock2.h> 8 #include <winsock2.h>
9 #endif 9 #endif
10 10
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 scoped_refptr<X509Certificate> cert, 58 scoped_refptr<X509Certificate> cert,
59 crypto::RSAPrivateKey* key, 59 crypto::RSAPrivateKey* key,
60 const SSLConfig& ssl_config) 60 const SSLConfig& ssl_config)
61 : ALLOW_THIS_IN_INITIALIZER_LIST(buffer_send_callback_( 61 : ALLOW_THIS_IN_INITIALIZER_LIST(buffer_send_callback_(
62 this, &SSLServerSocketNSS::BufferSendComplete)), 62 this, &SSLServerSocketNSS::BufferSendComplete)),
63 ALLOW_THIS_IN_INITIALIZER_LIST(buffer_recv_callback_( 63 ALLOW_THIS_IN_INITIALIZER_LIST(buffer_recv_callback_(
64 this, &SSLServerSocketNSS::BufferRecvComplete)), 64 this, &SSLServerSocketNSS::BufferRecvComplete)),
65 transport_send_busy_(false), 65 transport_send_busy_(false),
66 transport_recv_busy_(false), 66 transport_recv_busy_(false),
67 user_handshake_callback_(NULL), 67 user_handshake_callback_(NULL),
68 user_read_callback_(NULL), 68 old_user_read_callback_(NULL),
69 user_write_callback_(NULL), 69 user_write_callback_(NULL),
70 nss_fd_(NULL), 70 nss_fd_(NULL),
71 nss_bufs_(NULL), 71 nss_bufs_(NULL),
72 transport_socket_(transport_socket), 72 transport_socket_(transport_socket),
73 ssl_config_(ssl_config), 73 ssl_config_(ssl_config),
74 cert_(cert), 74 cert_(cert),
75 next_handshake_state_(STATE_NONE), 75 next_handshake_state_(STATE_NONE),
76 completed_handshake_(false) { 76 completed_handshake_(false) {
77 ssl_config_.false_start_enabled = false; 77 ssl_config_.false_start_enabled = false;
78 ssl_config_.ssl3_enabled = true; 78 ssl_config_.ssl3_enabled = true;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 NOTIMPLEMENTED(); 147 NOTIMPLEMENTED();
148 return ERR_NOT_IMPLEMENTED; 148 return ERR_NOT_IMPLEMENTED;
149 } 149 }
150 int SSLServerSocketNSS::Connect(const CompletionCallback& callback) { 150 int SSLServerSocketNSS::Connect(const CompletionCallback& callback) {
151 NOTIMPLEMENTED(); 151 NOTIMPLEMENTED();
152 return ERR_NOT_IMPLEMENTED; 152 return ERR_NOT_IMPLEMENTED;
153 } 153 }
154 154
155 int SSLServerSocketNSS::Read(IOBuffer* buf, int buf_len, 155 int SSLServerSocketNSS::Read(IOBuffer* buf, int buf_len,
156 OldCompletionCallback* callback) { 156 OldCompletionCallback* callback) {
157 DCHECK(!user_read_callback_); 157 DCHECK(!old_user_read_callback_);
csilv 2011/12/07 00:03:48 also check user_read_callback_
James Hawkins 2011/12/07 00:19:37 Done.
158 DCHECK(!user_handshake_callback_); 158 DCHECK(!user_handshake_callback_);
159 DCHECK(!user_read_buf_); 159 DCHECK(!user_read_buf_);
160 DCHECK(nss_bufs_); 160 DCHECK(nss_bufs_);
161
162 user_read_buf_ = buf;
163 user_read_buf_len_ = buf_len;
164
165 DCHECK(completed_handshake_);
166
167 int rv = DoReadLoop(OK);
168
169 if (rv == ERR_IO_PENDING) {
170 old_user_read_callback_ = callback;
171 } else {
172 user_read_buf_ = NULL;
173 user_read_buf_len_ = 0;
174 }
175 return rv;
176 }
177 int SSLServerSocketNSS::Read(IOBuffer* buf, int buf_len,
178 const CompletionCallback& callback) {
179 DCHECK(!old_user_read_callback_ && user_read_callback_.is_null());
180 DCHECK(!user_handshake_callback_);
181 DCHECK(!user_read_buf_);
182 DCHECK(nss_bufs_);
161 183
162 user_read_buf_ = buf; 184 user_read_buf_ = buf;
163 user_read_buf_len_ = buf_len; 185 user_read_buf_len_ = buf_len;
164 186
165 DCHECK(completed_handshake_); 187 DCHECK(completed_handshake_);
166 188
167 int rv = DoReadLoop(OK); 189 int rv = DoReadLoop(OK);
168 190
169 if (rv == ERR_IO_PENDING) { 191 if (rv == ERR_IO_PENDING) {
170 user_read_callback_ = callback; 192 user_read_callback_ = callback;
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 void SSLServerSocketNSS::DoHandshakeCallback(int rv) { 732 void SSLServerSocketNSS::DoHandshakeCallback(int rv) {
711 DCHECK_NE(rv, ERR_IO_PENDING); 733 DCHECK_NE(rv, ERR_IO_PENDING);
712 734
713 OldCompletionCallback* c = user_handshake_callback_; 735 OldCompletionCallback* c = user_handshake_callback_;
714 user_handshake_callback_ = NULL; 736 user_handshake_callback_ = NULL;
715 c->Run(rv > OK ? OK : rv); 737 c->Run(rv > OK ? OK : rv);
716 } 738 }
717 739
718 void SSLServerSocketNSS::DoReadCallback(int rv) { 740 void SSLServerSocketNSS::DoReadCallback(int rv) {
719 DCHECK(rv != ERR_IO_PENDING); 741 DCHECK(rv != ERR_IO_PENDING);
720 DCHECK(user_read_callback_); 742 DCHECK(old_user_read_callback_ || !user_read_callback_.is_null());
721 743
722 // Since Run may result in Read being called, clear |user_read_callback_| 744 // Since Run may result in Read being called, clear |old_user_read_callback_|
csilv 2011/12/07 00:03:48 nit, this comment applies to both old and new call
James Hawkins 2011/12/07 00:19:37 I changed it to s/old_// so it'll be right once it
723 // up front. 745 // up front.
724 OldCompletionCallback* c = user_read_callback_; 746 if (old_user_read_callback_) {
725 user_read_callback_ = NULL; 747 OldCompletionCallback* c = old_user_read_callback_;
726 user_read_buf_ = NULL; 748 old_user_read_callback_ = NULL;
727 user_read_buf_len_ = 0; 749 user_read_buf_ = NULL;
728 c->Run(rv); 750 user_read_buf_len_ = 0;
751 c->Run(rv);
752 } else {
753 CompletionCallback c = user_read_callback_;
754 user_read_callback_.Reset();
755 user_read_buf_ = NULL;
756 user_read_buf_len_ = 0;
757 c.Run(rv);
758 }
729 } 759 }
730 760
731 void SSLServerSocketNSS::DoWriteCallback(int rv) { 761 void SSLServerSocketNSS::DoWriteCallback(int rv) {
732 DCHECK(rv != ERR_IO_PENDING); 762 DCHECK(rv != ERR_IO_PENDING);
733 DCHECK(user_write_callback_); 763 DCHECK(user_write_callback_);
734 764
735 // Since Run may result in Write being called, clear |user_write_callback_| 765 // Since Run may result in Write being called, clear |user_write_callback_|
736 // up front. 766 // up front.
737 OldCompletionCallback* c = user_write_callback_; 767 OldCompletionCallback* c = user_write_callback_;
738 user_write_callback_ = NULL; 768 user_write_callback_ = NULL;
(...skipping 29 matching lines...) Expand all
768 // Initialize the NSS SSL library in a threadsafe way. This also 798 // Initialize the NSS SSL library in a threadsafe way. This also
769 // initializes the NSS base library. 799 // initializes the NSS base library.
770 EnsureNSSSSLInit(); 800 EnsureNSSSSLInit();
771 if (!NSS_IsInitialized()) 801 if (!NSS_IsInitialized())
772 return ERR_UNEXPECTED; 802 return ERR_UNEXPECTED;
773 803
774 return OK; 804 return OK;
775 } 805 }
776 806
777 } // namespace net 807 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698