OLD | NEW |
---|---|
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 #include "net/socket/ssl_client_socket_pool.h" | 5 #include "net/socket/ssl_client_socket_pool.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
322 } | 322 } |
323 | 323 |
324 int SSLConnectJob::DoSSLConnectComplete(int result) { | 324 int SSLConnectJob::DoSSLConnectComplete(int result) { |
325 // TODO(rvargas): Remove ScopedTracker below once crbug.com/462784 is fixed. | 325 // TODO(rvargas): Remove ScopedTracker below once crbug.com/462784 is fixed. |
326 tracked_objects::ScopedTracker tracking_profile( | 326 tracked_objects::ScopedTracker tracking_profile( |
327 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 327 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
328 "462784 SSLConnectJob::DoSSLConnectComplete")); | 328 "462784 SSLConnectJob::DoSSLConnectComplete")); |
329 | 329 |
330 connect_timing_.ssl_end = base::TimeTicks::Now(); | 330 connect_timing_.ssl_end = base::TimeTicks::Now(); |
331 | 331 |
332 SSLClientSocket::NextProtoStatus status = | 332 if (params_->want_spdy_over_npn() && |
333 SSLClientSocket::kNextProtoUnsupported; | 333 !NextProtoIsSPDY(ssl_socket_->GetNegotiatedProtocol())) { |
334 std::string proto; | 334 return ERR_NPN_NEGOTIATION_FAILED; |
335 // GetNextProto will fail and and trigger a NOTREACHED if we pass in a socket | |
336 // that hasn't had SSL_ImportFD called on it. If we get a certificate error | |
337 // here, then we know that we called SSL_ImportFD. | |
338 if (result == OK || IsCertificateError(result)) { | |
339 status = ssl_socket_->GetNextProto(&proto); | |
340 ssl_socket_->RecordNegotiationExtension(); | |
341 } | 335 } |
342 | 336 |
343 // If we want spdy over npn, make sure it succeeded. | |
Ryan Sleevi
2015/04/17 19:19:30
Kinda sad to lose this comment?
davidben
2015/04/17 19:43:11
Oh. Yeah, that comment was attached to the wrong b
| |
344 if (status == SSLClientSocket::kNextProtoNegotiated) { | |
345 ssl_socket_->set_was_npn_negotiated(true); | |
346 NextProto protocol_negotiated = | |
347 SSLClientSocket::NextProtoFromString(proto); | |
348 ssl_socket_->set_protocol_negotiated(protocol_negotiated); | |
349 // If we negotiated a SPDY version, it must have been present in | |
350 // SSLConfig::next_protos. | |
351 // TODO(mbelshe): Verify this. | |
352 if (protocol_negotiated >= kProtoSPDYMinimumVersion && | |
353 protocol_negotiated <= kProtoSPDYMaximumVersion) { | |
354 ssl_socket_->set_was_spdy_negotiated(true); | |
355 } | |
356 } | |
357 if (params_->want_spdy_over_npn() && !ssl_socket_->was_spdy_negotiated()) | |
358 return ERR_NPN_NEGOTIATION_FAILED; | |
359 | |
360 if (result == OK || | 337 if (result == OK || |
361 ssl_socket_->IgnoreCertError(result, params_->load_flags())) { | 338 ssl_socket_->IgnoreCertError(result, params_->load_flags())) { |
362 DCHECK(!connect_timing_.ssl_start.is_null()); | 339 DCHECK(!connect_timing_.ssl_start.is_null()); |
363 base::TimeDelta connect_duration = | 340 base::TimeDelta connect_duration = |
364 connect_timing_.ssl_end - connect_timing_.ssl_start; | 341 connect_timing_.ssl_end - connect_timing_.ssl_start; |
365 if (params_->want_spdy_over_npn()) { | 342 if (params_->want_spdy_over_npn()) { |
366 UMA_HISTOGRAM_CUSTOM_TIMES("Net.SpdyConnectionLatency_2", | 343 UMA_HISTOGRAM_CUSTOM_TIMES("Net.SpdyConnectionLatency_2", |
367 connect_duration, | 344 connect_duration, |
368 base::TimeDelta::FromMilliseconds(1), | 345 base::TimeDelta::FromMilliseconds(1), |
369 base::TimeDelta::FromMinutes(1), | 346 base::TimeDelta::FromMinutes(1), |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
678 if (base_.CloseOneIdleSocket()) | 655 if (base_.CloseOneIdleSocket()) |
679 return true; | 656 return true; |
680 return base_.CloseOneIdleConnectionInHigherLayeredPool(); | 657 return base_.CloseOneIdleConnectionInHigherLayeredPool(); |
681 } | 658 } |
682 | 659 |
683 void SSLClientSocketPool::OnSSLConfigChanged() { | 660 void SSLClientSocketPool::OnSSLConfigChanged() { |
684 FlushWithError(ERR_NETWORK_CHANGED); | 661 FlushWithError(ERR_NETWORK_CHANGED); |
685 } | 662 } |
686 | 663 |
687 } // namespace net | 664 } // namespace net |
OLD | NEW |