| 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/chromium/quic_stream_factory.h" | 5 #include "net/quic/chromium/quic_stream_factory.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <tuple> | 8 #include <tuple> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 factory_ = nullptr; | 616 factory_ = nullptr; |
| 617 base::ResetAndReturn(&callback_).Run(rv); | 617 base::ResetAndReturn(&callback_).Run(rv); |
| 618 } | 618 } |
| 619 | 619 |
| 620 base::TimeDelta QuicStreamRequest::GetTimeDelayForWaitingJob() const { | 620 base::TimeDelta QuicStreamRequest::GetTimeDelayForWaitingJob() const { |
| 621 if (!factory_) | 621 if (!factory_) |
| 622 return base::TimeDelta(); | 622 return base::TimeDelta(); |
| 623 return factory_->GetTimeDelayForWaitingJob(server_id_); | 623 return factory_->GetTimeDelayForWaitingJob(server_id_); |
| 624 } | 624 } |
| 625 | 625 |
| 626 std::unique_ptr<QuicHttpStream> QuicStreamRequest::CreateStream() { | 626 std::unique_ptr<HttpStream> QuicStreamRequest::CreateStream() { |
| 627 if (!session_) | 627 if (!session_) |
| 628 return nullptr; | 628 return nullptr; |
| 629 return base::MakeUnique<QuicHttpStream>(session_, http_server_properties_); | 629 return base::MakeUnique<QuicHttpStream>(session_, http_server_properties_); |
| 630 } | 630 } |
| 631 | 631 |
| 632 std::unique_ptr<BidirectionalStreamImpl> | 632 std::unique_ptr<BidirectionalStreamImpl> |
| 633 QuicStreamRequest::CreateBidirectionalStreamImpl() { | 633 QuicStreamRequest::CreateBidirectionalStreamImpl() { |
| 634 if (!session_) | 634 if (!session_) |
| 635 return nullptr; | 635 return nullptr; |
| 636 return base::MakeUnique<BidirectionalStreamQuicImpl>(session_); | 636 return base::MakeUnique<BidirectionalStreamQuicImpl>(session_); |
| 637 } | 637 } |
| 638 | 638 |
| 639 QuicStreamRequestFactory::QuicStreamRequestFactory() {} |
| 640 |
| 641 QuicStreamRequestFactory::~QuicStreamRequestFactory() {} |
| 642 |
| 643 std::unique_ptr<QuicStreamRequest> QuicStreamRequestFactory::CreateRequest( |
| 644 QuicStreamFactory* factory, |
| 645 HttpServerProperties* http_server_properties) { |
| 646 return base::MakeUnique<QuicStreamRequest>(factory, http_server_properties); |
| 647 } |
| 648 |
| 639 QuicStreamFactory::QuicStreamFactory( | 649 QuicStreamFactory::QuicStreamFactory( |
| 640 NetLog* net_log, | 650 NetLog* net_log, |
| 641 HostResolver* host_resolver, | 651 HostResolver* host_resolver, |
| 642 SSLConfigService* ssl_config_service, | 652 SSLConfigService* ssl_config_service, |
| 643 ClientSocketFactory* client_socket_factory, | 653 ClientSocketFactory* client_socket_factory, |
| 644 HttpServerProperties* http_server_properties, | 654 HttpServerProperties* http_server_properties, |
| 645 ProxyDelegate* proxy_delegate, | 655 ProxyDelegate* proxy_delegate, |
| 646 CertVerifier* cert_verifier, | 656 CertVerifier* cert_verifier, |
| 647 CTPolicyEnforcer* ct_policy_enforcer, | 657 CTPolicyEnforcer* ct_policy_enforcer, |
| 648 ChannelIDService* channel_id_service, | 658 ChannelIDService* channel_id_service, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 678 push_delegate_(nullptr), | 688 push_delegate_(nullptr), |
| 679 proxy_delegate_(proxy_delegate), | 689 proxy_delegate_(proxy_delegate), |
| 680 transport_security_state_(transport_security_state), | 690 transport_security_state_(transport_security_state), |
| 681 cert_transparency_verifier_(cert_transparency_verifier), | 691 cert_transparency_verifier_(cert_transparency_verifier), |
| 682 quic_crypto_client_stream_factory_(quic_crypto_client_stream_factory), | 692 quic_crypto_client_stream_factory_(quic_crypto_client_stream_factory), |
| 683 random_generator_(random_generator), | 693 random_generator_(random_generator), |
| 684 clock_(clock), | 694 clock_(clock), |
| 685 max_packet_length_(max_packet_length), | 695 max_packet_length_(max_packet_length), |
| 686 clock_skew_detector_(base::TimeTicks::Now(), base::Time::Now()), | 696 clock_skew_detector_(base::TimeTicks::Now(), base::Time::Now()), |
| 687 socket_performance_watcher_factory_(socket_performance_watcher_factory), | 697 socket_performance_watcher_factory_(socket_performance_watcher_factory), |
| 698 stream_request_factory_(base::MakeUnique<QuicStreamRequestFactory>()), |
| 688 config_(InitializeQuicConfig(connection_options, | 699 config_(InitializeQuicConfig(connection_options, |
| 689 idle_connection_timeout_seconds)), | 700 idle_connection_timeout_seconds)), |
| 690 crypto_config_(base::WrapUnique( | 701 crypto_config_(base::WrapUnique( |
| 691 new ProofVerifierChromium(cert_verifier, | 702 new ProofVerifierChromium(cert_verifier, |
| 692 ct_policy_enforcer, | 703 ct_policy_enforcer, |
| 693 transport_security_state, | 704 transport_security_state, |
| 694 cert_transparency_verifier))), | 705 cert_transparency_verifier))), |
| 695 supported_versions_(supported_versions), | 706 supported_versions_(supported_versions), |
| 696 mark_quic_broken_when_network_blackholes_( | 707 mark_quic_broken_when_network_blackholes_( |
| 697 mark_quic_broken_when_network_blackholes), | 708 mark_quic_broken_when_network_blackholes), |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 843 QuicChromiumClientSession* session = key_value.second; | 854 QuicChromiumClientSession* session = key_value.second; |
| 844 if (destination.Equals(all_sessions_[session].destination()) && | 855 if (destination.Equals(all_sessions_[session].destination()) && |
| 845 session->CanPool(server_id.host(), server_id.privacy_mode())) { | 856 session->CanPool(server_id.host(), server_id.privacy_mode())) { |
| 846 return true; | 857 return true; |
| 847 } | 858 } |
| 848 } | 859 } |
| 849 | 860 |
| 850 return false; | 861 return false; |
| 851 } | 862 } |
| 852 | 863 |
| 864 std::unique_ptr<QuicStreamRequest> QuicStreamFactory::CreateStreamRequest() { |
| 865 return stream_request_factory_->CreateRequest(this, http_server_properties_); |
| 866 } |
| 867 |
| 853 int QuicStreamFactory::Create(const QuicServerId& server_id, | 868 int QuicStreamFactory::Create(const QuicServerId& server_id, |
| 854 const HostPortPair& destination, | 869 const HostPortPair& destination, |
| 855 int cert_verify_flags, | 870 int cert_verify_flags, |
| 856 const GURL& url, | 871 const GURL& url, |
| 857 QuicStringPiece method, | 872 QuicStringPiece method, |
| 858 const NetLogWithSource& net_log, | 873 const NetLogWithSource& net_log, |
| 859 QuicStreamRequest* request) { | 874 QuicStreamRequest* request) { |
| 860 if (clock_skew_detector_.ClockSkewDetected(base::TimeTicks::Now(), | 875 if (clock_skew_detector_.ClockSkewDetected(base::TimeTicks::Now(), |
| 861 base::Time::Now())) { | 876 base::Time::Now())) { |
| 862 while (!active_sessions_.empty()) { | 877 while (!active_sessions_.empty()) { |
| (...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1726 // Since the session was active, there's no longer an | 1741 // Since the session was active, there's no longer an |
| 1727 // HttpStreamFactoryImpl::Job running which can mark it broken, unless the TCP | 1742 // HttpStreamFactoryImpl::Job running which can mark it broken, unless the TCP |
| 1728 // job also fails. So to avoid not using QUIC when we otherwise could, we mark | 1743 // job also fails. So to avoid not using QUIC when we otherwise could, we mark |
| 1729 // it as recently broken, which means that 0-RTT will be disabled but we'll | 1744 // it as recently broken, which means that 0-RTT will be disabled but we'll |
| 1730 // still race. | 1745 // still race. |
| 1731 http_server_properties_->MarkAlternativeServiceRecentlyBroken( | 1746 http_server_properties_->MarkAlternativeServiceRecentlyBroken( |
| 1732 alternative_service); | 1747 alternative_service); |
| 1733 } | 1748 } |
| 1734 | 1749 |
| 1735 } // namespace net | 1750 } // namespace net |
| OLD | NEW |