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

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

Issue 8831001: 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_server_socket_nss.h ('k') | net/socket/ssl_server_socket_unittest.cc » ('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_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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 old_user_read_callback_(NULL), 68 old_user_read_callback_(NULL),
69 user_write_callback_(NULL), 69 old_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;
79 ssl_config_.tls1_enabled = true; 79 ssl_config_.tls1_enabled = true;
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 user_read_callback_ = callback; 192 user_read_callback_ = callback;
193 } else { 193 } else {
194 user_read_buf_ = NULL; 194 user_read_buf_ = NULL;
195 user_read_buf_len_ = 0; 195 user_read_buf_len_ = 0;
196 } 196 }
197 return rv; 197 return rv;
198 } 198 }
199 199
200 int SSLServerSocketNSS::Write(IOBuffer* buf, int buf_len, 200 int SSLServerSocketNSS::Write(IOBuffer* buf, int buf_len,
201 OldCompletionCallback* callback) { 201 OldCompletionCallback* callback) {
202 DCHECK(!user_write_callback_); 202 DCHECK(!old_user_write_callback_ && user_write_callback_.is_null());
203 DCHECK(!user_write_buf_); 203 DCHECK(!user_write_buf_);
204 DCHECK(nss_bufs_); 204 DCHECK(nss_bufs_);
205 205
206 user_write_buf_ = buf;
207 user_write_buf_len_ = buf_len;
208
209 int rv = DoWriteLoop(OK);
210
211 if (rv == ERR_IO_PENDING) {
212 old_user_write_callback_ = callback;
213 } else {
214 user_write_buf_ = NULL;
215 user_write_buf_len_ = 0;
216 }
217 return rv;
218 }
219 int SSLServerSocketNSS::Write(IOBuffer* buf, int buf_len,
220 const CompletionCallback& callback) {
221 DCHECK(!old_user_write_callback_ && user_write_callback_.is_null());
222 DCHECK(!user_write_buf_);
223 DCHECK(nss_bufs_);
224
206 user_write_buf_ = buf; 225 user_write_buf_ = buf;
207 user_write_buf_len_ = buf_len; 226 user_write_buf_len_ = buf_len;
208 227
209 int rv = DoWriteLoop(OK); 228 int rv = DoWriteLoop(OK);
210 229
211 if (rv == ERR_IO_PENDING) { 230 if (rv == ERR_IO_PENDING) {
212 user_write_callback_ = callback; 231 user_write_callback_ = callback;
213 } else { 232 } else {
214 user_write_buf_ = NULL; 233 user_write_buf_ = NULL;
215 user_write_buf_len_ = 0; 234 user_write_buf_len_ = 0;
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 CompletionCallback c = user_read_callback_; 772 CompletionCallback c = user_read_callback_;
754 user_read_callback_.Reset(); 773 user_read_callback_.Reset();
755 user_read_buf_ = NULL; 774 user_read_buf_ = NULL;
756 user_read_buf_len_ = 0; 775 user_read_buf_len_ = 0;
757 c.Run(rv); 776 c.Run(rv);
758 } 777 }
759 } 778 }
760 779
761 void SSLServerSocketNSS::DoWriteCallback(int rv) { 780 void SSLServerSocketNSS::DoWriteCallback(int rv) {
762 DCHECK(rv != ERR_IO_PENDING); 781 DCHECK(rv != ERR_IO_PENDING);
763 DCHECK(user_write_callback_); 782 DCHECK(old_user_write_callback_ || !user_write_callback_.is_null());
764 783
765 // Since Run may result in Write being called, clear |user_write_callback_| 784 // Since Run may result in Write being called, clear |user_write_callback_|
766 // up front. 785 // up front.
767 OldCompletionCallback* c = user_write_callback_; 786 if (old_user_write_callback_) {
768 user_write_callback_ = NULL; 787 OldCompletionCallback* c = old_user_write_callback_;
769 user_write_buf_ = NULL; 788 old_user_write_callback_ = NULL;
770 user_write_buf_len_ = 0; 789 user_write_buf_ = NULL;
771 c->Run(rv); 790 user_write_buf_len_ = 0;
791 c->Run(rv);
792 } else {
793 CompletionCallback c = user_write_callback_;
794 user_write_callback_.Reset();
795 user_write_buf_ = NULL;
796 user_write_buf_len_ = 0;
797 c.Run(rv);
csilv 2011/12/07 20:45:22 nit: fix alignment
James Hawkins 2011/12/08 23:50:46 Done.
798 }
772 } 799 }
773 800
774 // static 801 // static
775 // NSS calls this if an incoming certificate needs to be verified. 802 // NSS calls this if an incoming certificate needs to be verified.
776 // Do nothing but return SECSuccess. 803 // Do nothing but return SECSuccess.
777 // This is called only in full handshake mode. 804 // This is called only in full handshake mode.
778 // Peer certificate is retrieved in HandshakeCallback() later, which is called 805 // Peer certificate is retrieved in HandshakeCallback() later, which is called
779 // in full handshake mode or in resumption handshake mode. 806 // in full handshake mode or in resumption handshake mode.
780 SECStatus SSLServerSocketNSS::OwnAuthCertHandler(void* arg, 807 SECStatus SSLServerSocketNSS::OwnAuthCertHandler(void* arg,
781 PRFileDesc* socket, 808 PRFileDesc* socket,
(...skipping 16 matching lines...) Expand all
798 // Initialize the NSS SSL library in a threadsafe way. This also 825 // Initialize the NSS SSL library in a threadsafe way. This also
799 // initializes the NSS base library. 826 // initializes the NSS base library.
800 EnsureNSSSSLInit(); 827 EnsureNSSSSLInit();
801 if (!NSS_IsInitialized()) 828 if (!NSS_IsInitialized())
802 return ERR_UNEXPECTED; 829 return ERR_UNEXPECTED;
803 830
804 return OK; 831 return OK;
805 } 832 }
806 833
807 } // namespace net 834 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_server_socket_nss.h ('k') | net/socket/ssl_server_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698