| 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/quic/quic_client_session.h" | 5 #include "net/quic/quic_client_session.h" |
| 6 | 6 |
| 7 #include "base/callback_helpers.h" | 7 #include "base/callback_helpers.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/metrics/sparse_histogram.h" | 10 #include "base/metrics/sparse_histogram.h" |
| (...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 586 stream_requests_.pop_front(); | 586 stream_requests_.pop_front(); |
| 587 request->OnRequestCompleteSuccess(CreateOutgoingReliableStreamImpl()); | 587 request->OnRequestCompleteSuccess(CreateOutgoingReliableStreamImpl()); |
| 588 } | 588 } |
| 589 | 589 |
| 590 if (GetNumOpenStreams() == 0) { | 590 if (GetNumOpenStreams() == 0) { |
| 591 stream_factory_->OnIdleSession(this); | 591 stream_factory_->OnIdleSession(this); |
| 592 } | 592 } |
| 593 } | 593 } |
| 594 | 594 |
| 595 void QuicClientSession::OnCryptoHandshakeEvent(CryptoHandshakeEvent event) { | 595 void QuicClientSession::OnCryptoHandshakeEvent(CryptoHandshakeEvent event) { |
| 596 if (stream_factory_ && event == HANDSHAKE_CONFIRMED && |
| 597 (stream_factory_->OnHandshakeConfirmed( |
| 598 this, logger_->ReceivedPacketLossRate()))) { |
| 599 return; |
| 600 } |
| 601 |
| 596 if (!callback_.is_null() && | 602 if (!callback_.is_null() && |
| 597 (!require_confirmation_ || | 603 (!require_confirmation_ || |
| 598 event == HANDSHAKE_CONFIRMED || event == ENCRYPTION_REESTABLISHED)) { | 604 event == HANDSHAKE_CONFIRMED || event == ENCRYPTION_REESTABLISHED)) { |
| 599 // TODO(rtenneti): Currently for all CryptoHandshakeEvent events, callback_ | 605 // TODO(rtenneti): Currently for all CryptoHandshakeEvent events, callback_ |
| 600 // could be called because there are no error events in CryptoHandshakeEvent | 606 // could be called because there are no error events in CryptoHandshakeEvent |
| 601 // enum. If error events are added to CryptoHandshakeEvent, then the | 607 // enum. If error events are added to CryptoHandshakeEvent, then the |
| 602 // following code needs to changed. | 608 // following code needs to changed. |
| 603 base::ResetAndReturn(&callback_).Run(OK); | 609 base::ResetAndReturn(&callback_).Run(OK); |
| 604 } | 610 } |
| 605 if (event == HANDSHAKE_CONFIRMED) { | 611 if (event == HANDSHAKE_CONFIRMED) { |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 761 result_copy->CopyFrom(verify_details_chromium->cert_verify_result); | 767 result_copy->CopyFrom(verify_details_chromium->cert_verify_result); |
| 762 cert_verify_result_.reset(result_copy); | 768 cert_verify_result_.reset(result_copy); |
| 763 pinning_failure_log_ = verify_details_chromium->pinning_failure_log; | 769 pinning_failure_log_ = verify_details_chromium->pinning_failure_log; |
| 764 logger_->OnCertificateVerified(*cert_verify_result_); | 770 logger_->OnCertificateVerified(*cert_verify_result_); |
| 765 } | 771 } |
| 766 | 772 |
| 767 void QuicClientSession::StartReading() { | 773 void QuicClientSession::StartReading() { |
| 768 packet_reader_.StartReading(); | 774 packet_reader_.StartReading(); |
| 769 } | 775 } |
| 770 | 776 |
| 771 void QuicClientSession::CloseSessionOnError(int error) { | 777 void QuicClientSession::CloseSessionOnError(int error, |
| 778 QuicErrorCode quic_error) { |
| 772 UMA_HISTOGRAM_SPARSE_SLOWLY("Net.QuicSession.CloseSessionOnError", -error); | 779 UMA_HISTOGRAM_SPARSE_SLOWLY("Net.QuicSession.CloseSessionOnError", -error); |
| 773 CloseSessionOnErrorInner(error, QUIC_INTERNAL_ERROR); | 780 CloseSessionOnErrorInner(error, quic_error); |
| 774 NotifyFactoryOfSessionClosed(); | 781 NotifyFactoryOfSessionClosed(); |
| 775 } | 782 } |
| 776 | 783 |
| 777 void QuicClientSession::CloseSessionOnErrorInner(int net_error, | 784 void QuicClientSession::CloseSessionOnErrorInner(int net_error, |
| 778 QuicErrorCode quic_error) { | 785 QuicErrorCode quic_error) { |
| 779 if (!callback_.is_null()) { | 786 if (!callback_.is_null()) { |
| 780 base::ResetAndReturn(&callback_).Run(net_error); | 787 base::ResetAndReturn(&callback_).Run(net_error); |
| 781 } | 788 } |
| 782 CloseAllStreams(net_error); | 789 CloseAllStreams(net_error); |
| 783 CloseAllObservers(net_error); | 790 CloseAllObservers(net_error); |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 910 return; | 917 return; |
| 911 | 918 |
| 912 // TODO(rch): re-enable this code once beta is cut. | 919 // TODO(rch): re-enable this code once beta is cut. |
| 913 // if (stream_factory_) | 920 // if (stream_factory_) |
| 914 // stream_factory_->OnSessionConnectTimeout(this); | 921 // stream_factory_->OnSessionConnectTimeout(this); |
| 915 // CloseAllStreams(ERR_QUIC_HANDSHAKE_FAILED); | 922 // CloseAllStreams(ERR_QUIC_HANDSHAKE_FAILED); |
| 916 // DCHECK_EQ(0u, GetNumOpenStreams()); | 923 // DCHECK_EQ(0u, GetNumOpenStreams()); |
| 917 } | 924 } |
| 918 | 925 |
| 919 } // namespace net | 926 } // namespace net |
| OLD | NEW |