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

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

Issue 6474027: In Dev build, we would like to see if SSLClientSocketNSS object... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 months 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // This file includes code SSLClientSocketNSS::DoVerifyCertComplete() derived 5 // This file includes code SSLClientSocketNSS::DoVerifyCertComplete() derived
6 // from AuthCertificateCallback() in 6 // from AuthCertificateCallback() in
7 // mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp. 7 // mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp.
8 8
9 /* ***** BEGIN LICENSE BLOCK ***** 9 /* ***** BEGIN LICENSE BLOCK *****
10 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 10 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 predicted_cert_chain_correct_(false), 472 predicted_cert_chain_correct_(false),
473 peername_initialized_(false), 473 peername_initialized_(false),
474 dnssec_provider_(NULL), 474 dnssec_provider_(NULL),
475 next_handshake_state_(STATE_NONE), 475 next_handshake_state_(STATE_NONE),
476 nss_fd_(NULL), 476 nss_fd_(NULL),
477 nss_bufs_(NULL), 477 nss_bufs_(NULL),
478 net_log_(transport_socket->socket()->NetLog()), 478 net_log_(transport_socket->socket()->NetLog()),
479 predicted_npn_status_(kNextProtoUnsupported), 479 predicted_npn_status_(kNextProtoUnsupported),
480 predicted_npn_proto_used_(false), 480 predicted_npn_proto_used_(false),
481 ssl_host_info_(ssl_host_info), 481 ssl_host_info_(ssl_host_info),
482 dns_cert_checker_(dns_ctx) { 482 dns_cert_checker_(dns_ctx),
483 valid_thread_id_(base::kInvalidThreadId) {
483 EnterFunction(""); 484 EnterFunction("");
484 } 485 }
485 486
486 SSLClientSocketNSS::~SSLClientSocketNSS() { 487 SSLClientSocketNSS::~SSLClientSocketNSS() {
487 EnterFunction(""); 488 EnterFunction("");
488 Disconnect(); 489 Disconnect();
489 LeaveFunction(""); 490 LeaveFunction("");
490 } 491 }
491 492
492 // static 493 // static
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 EnterFunction(""); 584 EnterFunction("");
584 DCHECK(transport_.get()); 585 DCHECK(transport_.get());
585 DCHECK(next_handshake_state_ == STATE_NONE); 586 DCHECK(next_handshake_state_ == STATE_NONE);
586 DCHECK(!user_read_callback_); 587 DCHECK(!user_read_callback_);
587 DCHECK(!user_write_callback_); 588 DCHECK(!user_write_callback_);
588 DCHECK(!user_connect_callback_); 589 DCHECK(!user_connect_callback_);
589 DCHECK(!user_read_buf_); 590 DCHECK(!user_read_buf_);
590 DCHECK(!user_write_buf_); 591 DCHECK(!user_write_buf_);
591 DCHECK(!pseudo_connected_); 592 DCHECK(!pseudo_connected_);
592 593
594 EnsureThreadIdAssigned();
595
593 net_log_.BeginEvent(NetLog::TYPE_SSL_CONNECT, NULL); 596 net_log_.BeginEvent(NetLog::TYPE_SSL_CONNECT, NULL);
594 597
595 int rv = Init(); 598 int rv = Init();
596 if (rv != OK) { 599 if (rv != OK) {
597 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, NULL); 600 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, NULL);
598 return rv; 601 return rv;
599 } 602 }
600 603
601 rv = InitializeSSLOptions(); 604 rv = InitializeSSLOptions();
602 if (rv != OK) { 605 if (rv != OK) {
(...skipping 29 matching lines...) Expand all
632 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, NULL); 635 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, NULL);
633 } 636 }
634 637
635 LeaveFunction(""); 638 LeaveFunction("");
636 return rv > OK ? OK : rv; 639 return rv > OK ? OK : rv;
637 } 640 }
638 641
639 void SSLClientSocketNSS::Disconnect() { 642 void SSLClientSocketNSS::Disconnect() {
640 EnterFunction(""); 643 EnterFunction("");
641 644
645 // Shut down anything that may call us back (through buffer_send_callback_,
646 // buffer_recv_callback, or handshake_io_callback_).
647 verifier_.reset();
648 transport_->socket()->Disconnect();
649
650 CHECK(CalledOnValidThread());
651
642 // TODO(wtc): Send SSL close_notify alert. 652 // TODO(wtc): Send SSL close_notify alert.
643 if (nss_fd_ != NULL) { 653 if (nss_fd_ != NULL) {
644 PR_Close(nss_fd_); 654 PR_Close(nss_fd_);
645 nss_fd_ = NULL; 655 nss_fd_ = NULL;
646 } 656 }
647 657
648 // Shut down anything that may call us back (through buffer_send_callback_,
649 // buffer_recv_callback, or handshake_io_callback_).
650 verifier_.reset();
651 transport_->socket()->Disconnect();
652
653 // Reset object state 658 // Reset object state
654 transport_send_busy_ = false; 659 transport_send_busy_ = false;
655 transport_recv_busy_ = false; 660 transport_recv_busy_ = false;
656 user_connect_callback_ = NULL; 661 user_connect_callback_ = NULL;
657 user_read_callback_ = NULL; 662 user_read_callback_ = NULL;
658 user_write_callback_ = NULL; 663 user_write_callback_ = NULL;
659 user_read_buf_ = NULL; 664 user_read_buf_ = NULL;
660 user_read_buf_len_ = 0; 665 user_read_buf_len_ = 0;
661 user_write_buf_ = NULL; 666 user_write_buf_ = NULL;
662 user_write_buf_len_ = 0; 667 user_write_buf_len_ = 0;
(...skipping 1828 matching lines...) Expand 10 before | Expand all | Expand 10 after
2491 void SSLClientSocketNSS::HandshakeCallback(PRFileDesc* socket, 2496 void SSLClientSocketNSS::HandshakeCallback(PRFileDesc* socket,
2492 void* arg) { 2497 void* arg) {
2493 SSLClientSocketNSS* that = reinterpret_cast<SSLClientSocketNSS*>(arg); 2498 SSLClientSocketNSS* that = reinterpret_cast<SSLClientSocketNSS*>(arg);
2494 2499
2495 that->handshake_callback_called_ = true; 2500 that->handshake_callback_called_ = true;
2496 2501
2497 that->UpdateServerCert(); 2502 that->UpdateServerCert();
2498 that->UpdateConnectionStatus(); 2503 that->UpdateConnectionStatus();
2499 } 2504 }
2500 2505
2506 void SSLClientSocketNSS::EnsureThreadIdAssigned() const {
2507 base::AutoLock auto_lock(lock_);
2508 if (valid_thread_id_ != base::kInvalidThreadId)
2509 return;
2510 valid_thread_id_ = base::PlatformThread::CurrentId();
2511 }
2512
2513 bool SSLClientSocketNSS::CalledOnValidThread() const {
2514 EnsureThreadIdAssigned();
2515 base::AutoLock auto_lock(lock_);
2516 return valid_thread_id_ == base::PlatformThread::CurrentId();
2517 }
2518
2519 void SSLClientSocketNSS::DetachFromThread() {
2520 base::AutoLock auto_lock(lock_);
2521 valid_thread_id_ = base::kInvalidThreadId;
2522 }
2523
2501 } // namespace net 2524 } // namespace net
OLDNEW
« net/socket/ssl_client_socket_nss.h ('K') | « net/socket/ssl_client_socket_nss.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698