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

Side by Side Diff: net/socket/ssl_client_socket_openssl.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_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 old_user_write_callback_(NULL), 395 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 if (old_user_write_callback_) { 635 OldCompletionCallback* c = user_write_callback_;
636 OldCompletionCallback* c = old_user_write_callback_; 636 user_write_callback_ = NULL;
637 old_user_write_callback_ = NULL; 637 user_write_buf_ = NULL;
638 user_write_buf_ = NULL; 638 user_write_buf_len_ = 0;
639 user_write_buf_len_ = 0; 639 c->Run(rv);
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 }
648 } 640 }
649 641
650 // StreamSocket methods 642 // StreamSocket methods
651 643
652 int SSLClientSocketOpenSSL::Connect(OldCompletionCallback* callback) { 644 int SSLClientSocketOpenSSL::Connect(OldCompletionCallback* callback) {
653 net_log_.BeginEvent(NetLog::TYPE_SSL_CONNECT, NULL); 645 net_log_.BeginEvent(NetLog::TYPE_SSL_CONNECT, NULL);
654 646
655 // Set up new ssl object. 647 // Set up new ssl object.
656 if (!Init()) { 648 if (!Init()) {
657 int result = ERR_UNEXPECTED; 649 int result = ERR_UNEXPECTED;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 // Null all callbacks, delete all buffers. 705 // Null all callbacks, delete all buffers.
714 transport_send_busy_ = false; 706 transport_send_busy_ = false;
715 send_buffer_ = NULL; 707 send_buffer_ = NULL;
716 transport_recv_busy_ = false; 708 transport_recv_busy_ = false;
717 recv_buffer_ = NULL; 709 recv_buffer_ = NULL;
718 710
719 old_user_connect_callback_ = NULL; 711 old_user_connect_callback_ = NULL;
720 user_connect_callback_.Reset(); 712 user_connect_callback_.Reset();
721 old_user_read_callback_ = NULL; 713 old_user_read_callback_ = NULL;
722 user_read_callback_.Reset(); 714 user_read_callback_.Reset();
723 old_user_write_callback_ = NULL; 715 user_write_callback_ = NULL;
724 user_write_callback_.Reset();
725 user_read_buf_ = NULL; 716 user_read_buf_ = NULL;
726 user_read_buf_len_ = 0; 717 user_read_buf_len_ = 0;
727 user_write_buf_ = NULL; 718 user_write_buf_ = NULL;
728 user_write_buf_len_ = 0; 719 user_write_buf_len_ = 0;
729 720
730 server_cert_verify_result_.Reset(); 721 server_cert_verify_result_.Reset();
731 completed_handshake_ = false; 722 completed_handshake_ = false;
732 723
733 client_certs_.clear(); 724 client_certs_.clear();
734 client_auth_cert_needed_ = false; 725 client_auth_cert_needed_ = false;
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 1239
1249 int SSLClientSocketOpenSSL::Write(IOBuffer* buf, 1240 int SSLClientSocketOpenSSL::Write(IOBuffer* buf,
1250 int buf_len, 1241 int buf_len,
1251 OldCompletionCallback* callback) { 1242 OldCompletionCallback* callback) {
1252 user_write_buf_ = buf; 1243 user_write_buf_ = buf;
1253 user_write_buf_len_ = buf_len; 1244 user_write_buf_len_ = buf_len;
1254 1245
1255 int rv = DoWriteLoop(OK); 1246 int rv = DoWriteLoop(OK);
1256 1247
1257 if (rv == ERR_IO_PENDING) { 1248 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) {
1275 user_write_callback_ = callback; 1249 user_write_callback_ = callback;
1276 } else { 1250 } else {
1277 user_write_buf_ = NULL; 1251 user_write_buf_ = NULL;
1278 user_write_buf_len_ = 0; 1252 user_write_buf_len_ = 0;
1279 } 1253 }
1280 1254
1281 return rv; 1255 return rv;
1282 } 1256 }
1283 1257
1284 int SSLClientSocketOpenSSL::DoWriteLoop(int result) { 1258 int SSLClientSocketOpenSSL::DoWriteLoop(int result) {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1329 net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv, 1303 net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv,
1330 user_write_buf_->data()); 1304 user_write_buf_->data());
1331 return rv; 1305 return rv;
1332 } 1306 }
1333 1307
1334 int err = SSL_get_error(ssl_, rv); 1308 int err = SSL_get_error(ssl_, rv);
1335 return MapOpenSSLError(err, err_tracer); 1309 return MapOpenSSLError(err, err_tracer);
1336 } 1310 }
1337 1311
1338 } // namespace net 1312 } // 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