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

Side by Side Diff: net/socket/ssl_client_socket_openssl.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_openssl.h ('k') | net/socket/ssl_client_socket_win.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 // OpenSSL binding for SSLClientSocket. The class layout and general principle 5 // OpenSSL binding for SSLClientSocket. The class layout and general principle
6 // of operation is derived from SSLClientSocketNSS. 6 // of operation is derived from SSLClientSocketNSS.
7 7
8 #include "net/socket/ssl_client_socket_openssl.h" 8 #include "net/socket/ssl_client_socket_openssl.h"
9 9
10 #include <openssl/ssl.h> 10 #include <openssl/ssl.h>
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 const SSLConfig& ssl_config, 385 const SSLConfig& ssl_config,
386 const SSLClientSocketContext& context) 386 const SSLClientSocketContext& context)
387 : ALLOW_THIS_IN_INITIALIZER_LIST(buffer_send_callback_( 387 : ALLOW_THIS_IN_INITIALIZER_LIST(buffer_send_callback_(
388 this, &SSLClientSocketOpenSSL::BufferSendComplete)), 388 this, &SSLClientSocketOpenSSL::BufferSendComplete)),
389 ALLOW_THIS_IN_INITIALIZER_LIST(buffer_recv_callback_( 389 ALLOW_THIS_IN_INITIALIZER_LIST(buffer_recv_callback_(
390 this, &SSLClientSocketOpenSSL::BufferRecvComplete)), 390 this, &SSLClientSocketOpenSSL::BufferRecvComplete)),
391 transport_send_busy_(false), 391 transport_send_busy_(false),
392 transport_recv_busy_(false), 392 transport_recv_busy_(false),
393 old_user_connect_callback_(NULL), 393 old_user_connect_callback_(NULL),
394 old_user_read_callback_(NULL), 394 old_user_read_callback_(NULL),
395 user_write_callback_(NULL), 395 old_user_write_callback_(NULL),
396 completed_handshake_(false), 396 completed_handshake_(false),
397 client_auth_cert_needed_(false), 397 client_auth_cert_needed_(false),
398 cert_verifier_(context.cert_verifier), 398 cert_verifier_(context.cert_verifier),
399 ssl_(NULL), 399 ssl_(NULL),
400 transport_bio_(NULL), 400 transport_bio_(NULL),
401 transport_(transport_socket), 401 transport_(transport_socket),
402 host_and_port_(host_and_port), 402 host_and_port_(host_and_port),
403 ssl_config_(ssl_config), 403 ssl_config_(ssl_config),
404 trying_cached_session_(false), 404 trying_cached_session_(false),
405 npn_status_(kNextProtoUnsupported), 405 npn_status_(kNextProtoUnsupported),
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 user_read_callback_.Reset(); 625 user_read_callback_.Reset();
626 user_read_buf_ = NULL; 626 user_read_buf_ = NULL;
627 user_read_buf_len_ = 0; 627 user_read_buf_len_ = 0;
628 c.Run(rv); 628 c.Run(rv);
629 } 629 }
630 } 630 }
631 631
632 void SSLClientSocketOpenSSL::DoWriteCallback(int rv) { 632 void SSLClientSocketOpenSSL::DoWriteCallback(int rv) {
633 // Since Run may result in Write being called, clear |user_write_callback_| 633 // Since Run may result in Write being called, clear |user_write_callback_|
634 // up front. 634 // up front.
635 OldCompletionCallback* c = user_write_callback_; 635 if (old_user_write_callback_) {
636 user_write_callback_ = NULL; 636 OldCompletionCallback* c = old_user_write_callback_;
637 user_write_buf_ = NULL; 637 old_user_write_callback_ = NULL;
638 user_write_buf_len_ = 0; 638 user_write_buf_ = NULL;
639 c->Run(rv); 639 user_write_buf_len_ = 0;
640 c->Run(rv);
641 } else {
642 CompletionCallback c = user_write_callback_;
643 user_write_callback_.Reset();
644 user_write_buf_ = NULL;
645 user_write_buf_len_ = 0;
646 c.Run(rv);
647 }
640 } 648 }
641 649
642 // StreamSocket methods 650 // StreamSocket methods
643 651
644 int SSLClientSocketOpenSSL::Connect(OldCompletionCallback* callback) { 652 int SSLClientSocketOpenSSL::Connect(OldCompletionCallback* callback) {
645 net_log_.BeginEvent(NetLog::TYPE_SSL_CONNECT, NULL); 653 net_log_.BeginEvent(NetLog::TYPE_SSL_CONNECT, NULL);
646 654
647 // Set up new ssl object. 655 // Set up new ssl object.
648 if (!Init()) { 656 if (!Init()) {
649 int result = ERR_UNEXPECTED; 657 int result = ERR_UNEXPECTED;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 // Null all callbacks, delete all buffers. 713 // Null all callbacks, delete all buffers.
706 transport_send_busy_ = false; 714 transport_send_busy_ = false;
707 send_buffer_ = NULL; 715 send_buffer_ = NULL;
708 transport_recv_busy_ = false; 716 transport_recv_busy_ = false;
709 recv_buffer_ = NULL; 717 recv_buffer_ = NULL;
710 718
711 old_user_connect_callback_ = NULL; 719 old_user_connect_callback_ = NULL;
712 user_connect_callback_.Reset(); 720 user_connect_callback_.Reset();
713 old_user_read_callback_ = NULL; 721 old_user_read_callback_ = NULL;
714 user_read_callback_.Reset(); 722 user_read_callback_.Reset();
715 user_write_callback_ = NULL; 723 old_user_write_callback_ = NULL;
724 user_write_callback_.Reset();
716 user_read_buf_ = NULL; 725 user_read_buf_ = NULL;
717 user_read_buf_len_ = 0; 726 user_read_buf_len_ = 0;
718 user_write_buf_ = NULL; 727 user_write_buf_ = NULL;
719 user_write_buf_len_ = 0; 728 user_write_buf_len_ = 0;
720 729
721 server_cert_verify_result_.Reset(); 730 server_cert_verify_result_.Reset();
722 completed_handshake_ = false; 731 completed_handshake_ = false;
723 732
724 client_certs_.clear(); 733 client_certs_.clear();
725 client_auth_cert_needed_ = false; 734 client_auth_cert_needed_ = false;
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
1239 1248
1240 int SSLClientSocketOpenSSL::Write(IOBuffer* buf, 1249 int SSLClientSocketOpenSSL::Write(IOBuffer* buf,
1241 int buf_len, 1250 int buf_len,
1242 OldCompletionCallback* callback) { 1251 OldCompletionCallback* callback) {
1243 user_write_buf_ = buf; 1252 user_write_buf_ = buf;
1244 user_write_buf_len_ = buf_len; 1253 user_write_buf_len_ = buf_len;
1245 1254
1246 int rv = DoWriteLoop(OK); 1255 int rv = DoWriteLoop(OK);
1247 1256
1248 if (rv == ERR_IO_PENDING) { 1257 if (rv == ERR_IO_PENDING) {
1258 old_user_write_callback_ = callback;
1259 } else {
1260 user_write_buf_ = NULL;
1261 user_write_buf_len_ = 0;
1262 }
1263
1264 return rv;
1265 }
1266 int SSLClientSocketOpenSSL::Write(IOBuffer* buf,
1267 int buf_len,
1268 const CompletionCallback& callback) {
1269 user_write_buf_ = buf;
1270 user_write_buf_len_ = buf_len;
1271
1272 int rv = DoWriteLoop(OK);
1273
1274 if (rv == ERR_IO_PENDING) {
1249 user_write_callback_ = callback; 1275 user_write_callback_ = callback;
1250 } else { 1276 } else {
1251 user_write_buf_ = NULL; 1277 user_write_buf_ = NULL;
1252 user_write_buf_len_ = 0; 1278 user_write_buf_len_ = 0;
1253 } 1279 }
1254 1280
1255 return rv; 1281 return rv;
1256 } 1282 }
1257 1283
1258 int SSLClientSocketOpenSSL::DoWriteLoop(int result) { 1284 int SSLClientSocketOpenSSL::DoWriteLoop(int result) {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv, 1329 net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv,
1304 user_write_buf_->data()); 1330 user_write_buf_->data());
1305 return rv; 1331 return rv;
1306 } 1332 }
1307 1333
1308 int err = SSL_get_error(ssl_, rv); 1334 int err = SSL_get_error(ssl_, rv);
1309 return MapOpenSSLError(err, err_tracer); 1335 return MapOpenSSLError(err, err_tracer);
1310 } 1336 }
1311 1337
1312 } // namespace net 1338 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_openssl.h ('k') | net/socket/ssl_client_socket_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698