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

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

Issue 662123002: Adding instrumentation to locate the source of jankiness. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/master
Patch Set: Created 6 years, 2 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
« no previous file with comments | « no previous file | no next file » | 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 1671 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 CertSetCertificateContextProperty( 1682 CertSetCertificateContextProperty(
1683 ssl_config_.client_cert->os_cert_handle(), 1683 ssl_config_.client_cert->os_cert_handle(),
1684 CERT_KEY_PROV_HANDLE_PROP_ID, 0, NULL); 1684 CERT_KEY_PROV_HANDLE_PROP_ID, 0, NULL);
1685 } 1685 }
1686 #endif 1686 #endif
1687 1687
1688 return net_error; 1688 return net_error;
1689 } 1689 }
1690 1690
1691 int SSLClientSocketNSS::Core::DoHandshakeLoop(int last_io_result) { 1691 int SSLClientSocketNSS::Core::DoHandshakeLoop(int last_io_result) {
1692 // TODO(vadimt): Remove ScopedProfile below once crbug.com/424386 is fixed.
1693 tracked_objects::ScopedProfile tracking_profile(
1694 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1695 "424386 SSLClientSocketNSS::Core::DoHandshakeLoop"));
1696
1692 DCHECK(OnNSSTaskRunner()); 1697 DCHECK(OnNSSTaskRunner());
1693 1698
1694 int rv = last_io_result; 1699 int rv = last_io_result;
1695 do { 1700 do {
1696 // Default to STATE_NONE for next state. 1701 // Default to STATE_NONE for next state.
1697 State state = next_handshake_state_; 1702 State state = next_handshake_state_;
1698 GotoState(STATE_NONE); 1703 GotoState(STATE_NONE);
1699 1704
1700 switch (state) { 1705 switch (state) {
1701 case STATE_HANDSHAKE: 1706 case STATE_HANDSHAKE:
(...skipping 16 matching lines...) Expand all
1718 // special case we keep looping even if rv is ERR_IO_PENDING because 1723 // special case we keep looping even if rv is ERR_IO_PENDING because
1719 // the transport IO may allow DoHandshake to make progress. 1724 // the transport IO may allow DoHandshake to make progress.
1720 DCHECK(rv == OK || rv == ERR_IO_PENDING); 1725 DCHECK(rv == OK || rv == ERR_IO_PENDING);
1721 rv = OK; // This causes us to stay in the loop. 1726 rv = OK; // This causes us to stay in the loop.
1722 } 1727 }
1723 } while (rv != ERR_IO_PENDING && next_handshake_state_ != STATE_NONE); 1728 } while (rv != ERR_IO_PENDING && next_handshake_state_ != STATE_NONE);
1724 return rv; 1729 return rv;
1725 } 1730 }
1726 1731
1727 int SSLClientSocketNSS::Core::DoReadLoop(int result) { 1732 int SSLClientSocketNSS::Core::DoReadLoop(int result) {
1733 // TODO(vadimt): Remove ScopedProfile below once crbug.com/424386 is fixed.
1734 tracked_objects::ScopedProfile tracking_profile(
1735 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1736 "424386 SSLClientSocketNSS::Core::DoReadLoop"));
1737
1728 DCHECK(OnNSSTaskRunner()); 1738 DCHECK(OnNSSTaskRunner());
1729 DCHECK(false_started_ || handshake_callback_called_); 1739 DCHECK(false_started_ || handshake_callback_called_);
1730 DCHECK_EQ(STATE_NONE, next_handshake_state_); 1740 DCHECK_EQ(STATE_NONE, next_handshake_state_);
1731 1741
1732 if (result < 0) 1742 if (result < 0)
1733 return result; 1743 return result;
1734 1744
1735 if (!nss_bufs_) { 1745 if (!nss_bufs_) {
1736 LOG(DFATAL) << "!nss_bufs_"; 1746 LOG(DFATAL) << "!nss_bufs_";
1737 int rv = ERR_UNEXPECTED; 1747 int rv = ERR_UNEXPECTED;
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
2188 DoWriteCallback(rv_write); 2198 DoWriteCallback(rv_write);
2189 } 2199 }
2190 2200
2191 // As part of Connect(), the SSLClientSocketNSS object performs an SSL 2201 // As part of Connect(), the SSLClientSocketNSS object performs an SSL
2192 // handshake. This requires network IO, which in turn calls 2202 // handshake. This requires network IO, which in turn calls
2193 // BufferRecvComplete() with a non-zero byte count. This byte count eventually 2203 // BufferRecvComplete() with a non-zero byte count. This byte count eventually
2194 // winds its way through the state machine and ends up being passed to the 2204 // winds its way through the state machine and ends up being passed to the
2195 // callback. For Read() and Write(), that's what we want. But for Connect(), 2205 // callback. For Read() and Write(), that's what we want. But for Connect(),
2196 // the caller expects OK (i.e. 0) for success. 2206 // the caller expects OK (i.e. 0) for success.
2197 void SSLClientSocketNSS::Core::DoConnectCallback(int rv) { 2207 void SSLClientSocketNSS::Core::DoConnectCallback(int rv) {
2208 // TODO(vadimt): Remove ScopedProfile below once crbug.com/424386 is fixed.
2209 tracked_objects::ScopedProfile tracking_profile(
2210 FROM_HERE_WITH_EXPLICIT_FUNCTION(
2211 "424386 SSLClientSocketNSS::Core::DoConnectCallback"));
2212
2198 DCHECK(OnNSSTaskRunner()); 2213 DCHECK(OnNSSTaskRunner());
2199 DCHECK_NE(rv, ERR_IO_PENDING); 2214 DCHECK_NE(rv, ERR_IO_PENDING);
2200 DCHECK(!user_connect_callback_.is_null()); 2215 DCHECK(!user_connect_callback_.is_null());
2201 2216
2202 base::Closure c = base::Bind( 2217 base::Closure c = base::Bind(
2203 base::ResetAndReturn(&user_connect_callback_), 2218 base::ResetAndReturn(&user_connect_callback_),
2204 rv > OK ? OK : rv); 2219 rv > OK ? OK : rv);
2205 PostOrRunCallback(FROM_HERE, c); 2220 PostOrRunCallback(FROM_HERE, c);
2206 } 2221 }
2207 2222
2208 void SSLClientSocketNSS::Core::DoReadCallback(int rv) { 2223 void SSLClientSocketNSS::Core::DoReadCallback(int rv) {
2224 // TODO(vadimt): Remove ScopedProfile below once crbug.com/424386 is fixed.
2225 tracked_objects::ScopedProfile tracking_profile(
2226 FROM_HERE_WITH_EXPLICIT_FUNCTION(
2227 "424386 SSLClientSocketNSS::Core::DoReadCallback"));
2228
2209 DCHECK(OnNSSTaskRunner()); 2229 DCHECK(OnNSSTaskRunner());
2210 DCHECK_NE(ERR_IO_PENDING, rv); 2230 DCHECK_NE(ERR_IO_PENDING, rv);
2211 DCHECK(!user_read_callback_.is_null()); 2231 DCHECK(!user_read_callback_.is_null());
2212 2232
2213 user_read_buf_ = NULL; 2233 user_read_buf_ = NULL;
2214 user_read_buf_len_ = 0; 2234 user_read_buf_len_ = 0;
2215 int amount_in_read_buffer = memio_GetReadableBufferSize(nss_bufs_); 2235 int amount_in_read_buffer = memio_GetReadableBufferSize(nss_bufs_);
2216 // This is used to curry the |amount_int_read_buffer| and |user_cb| back to 2236 // This is used to curry the |amount_int_read_buffer| and |user_cb| back to
2217 // the network task runner. 2237 // the network task runner.
2218 PostOrRunCallback( 2238 PostOrRunCallback(
2219 FROM_HERE, 2239 FROM_HERE,
2220 base::Bind(&Core::OnNSSBufferUpdated, this, amount_in_read_buffer)); 2240 base::Bind(&Core::OnNSSBufferUpdated, this, amount_in_read_buffer));
2221 PostOrRunCallback( 2241 PostOrRunCallback(
2222 FROM_HERE, 2242 FROM_HERE,
2223 base::Bind(&Core::DidNSSRead, this, rv)); 2243 base::Bind(&Core::DidNSSRead, this, rv));
2224 // TODO(vadimt): Remove ScopedProfile below once crbug.com/418183 is fixed. 2244 // TODO(vadimt): Remove ScopedProfile below once crbug.com/418183 is fixed.
2225 tracked_objects::ScopedProfile tracking_profile( 2245 tracked_objects::ScopedProfile tracking_profile1(
2226 FROM_HERE_WITH_EXPLICIT_FUNCTION( 2246 FROM_HERE_WITH_EXPLICIT_FUNCTION(
2227 "SSLClientSocketNSS::Core::DoReadCallback")); 2247 "SSLClientSocketNSS::Core::DoReadCallback"));
2228 PostOrRunCallback( 2248 PostOrRunCallback(
2229 FROM_HERE, 2249 FROM_HERE,
2230 base::Bind(base::ResetAndReturn(&user_read_callback_), rv)); 2250 base::Bind(base::ResetAndReturn(&user_read_callback_), rv));
2231 } 2251 }
2232 2252
2233 void SSLClientSocketNSS::Core::DoWriteCallback(int rv) { 2253 void SSLClientSocketNSS::Core::DoWriteCallback(int rv) {
2234 DCHECK(OnNSSTaskRunner()); 2254 DCHECK(OnNSSTaskRunner());
2235 DCHECK_NE(ERR_IO_PENDING, rv); 2255 DCHECK_NE(ERR_IO_PENDING, rv);
(...skipping 1332 matching lines...) Expand 10 before | Expand all | Expand 10 after
3568 scoped_refptr<X509Certificate> 3588 scoped_refptr<X509Certificate>
3569 SSLClientSocketNSS::GetUnverifiedServerCertificateChain() const { 3589 SSLClientSocketNSS::GetUnverifiedServerCertificateChain() const {
3570 return core_->state().server_cert.get(); 3590 return core_->state().server_cert.get();
3571 } 3591 }
3572 3592
3573 ChannelIDService* SSLClientSocketNSS::GetChannelIDService() const { 3593 ChannelIDService* SSLClientSocketNSS::GetChannelIDService() const {
3574 return channel_id_service_; 3594 return channel_id_service_;
3575 } 3595 }
3576 3596
3577 } // namespace net 3597 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698