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_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/cpu.h" | 9 #include "base/cpu.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
575 ++it) { | 575 ++it) { |
576 DCHECK(active_sessions_.count(*it)); | 576 DCHECK(active_sessions_.count(*it)); |
577 DCHECK_EQ(session, active_sessions_[*it]); | 577 DCHECK_EQ(session, active_sessions_[*it]); |
578 // Track sessions which have recently gone away so that we can disable | 578 // Track sessions which have recently gone away so that we can disable |
579 // port suggestions. | 579 // port suggestions. |
580 if (session->goaway_received()) { | 580 if (session->goaway_received()) { |
581 gone_away_aliases_.insert(*it); | 581 gone_away_aliases_.insert(*it); |
582 } | 582 } |
583 | 583 |
584 active_sessions_.erase(*it); | 584 active_sessions_.erase(*it); |
585 ProcessGoingAwaySession(session, *it); | 585 ProcessGoingAwaySession(session, *it, true); |
586 } | 586 } |
587 ProcessGoingAwaySession(session, all_sessions_[session]); | 587 ProcessGoingAwaySession(session, all_sessions_[session], false); |
588 if (!aliases.empty()) { | 588 if (!aliases.empty()) { |
589 const IpAliasKey ip_alias_key(session->connection()->peer_address(), | 589 const IpAliasKey ip_alias_key(session->connection()->peer_address(), |
590 aliases.begin()->is_https()); | 590 aliases.begin()->is_https()); |
591 ip_aliases_[ip_alias_key].erase(session); | 591 ip_aliases_[ip_alias_key].erase(session); |
592 if (ip_aliases_[ip_alias_key].empty()) { | 592 if (ip_aliases_[ip_alias_key].empty()) { |
593 ip_aliases_.erase(ip_alias_key); | 593 ip_aliases_.erase(ip_alias_key); |
594 } | 594 } |
595 } | 595 } |
596 session_aliases_.erase(session); | 596 session_aliases_.erase(session); |
597 } | 597 } |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
809 return; | 809 return; |
810 | 810 |
811 if (!server_id.is_https()) { | 811 if (!server_id.is_https()) { |
812 // Don't check the certificates for insecure QUIC. | 812 // Don't check the certificates for insecure QUIC. |
813 cached->SetProofValid(); | 813 cached->SetProofValid(); |
814 } | 814 } |
815 } | 815 } |
816 | 816 |
817 void QuicStreamFactory::ProcessGoingAwaySession( | 817 void QuicStreamFactory::ProcessGoingAwaySession( |
818 QuicClientSession* session, | 818 QuicClientSession* session, |
819 const QuicServerId& server_id) { | 819 const QuicServerId& server_id, |
820 bool session_was_active) { | |
820 if (!http_server_properties_) | 821 if (!http_server_properties_) |
821 return; | 822 return; |
822 | 823 |
823 const QuicConnectionStats& stats = session->connection()->GetStats(); | 824 const QuicConnectionStats& stats = session->connection()->GetStats(); |
824 if (!session->IsCryptoHandshakeConfirmed()) { | 825 if (session->IsCryptoHandshakeConfirmed()) { |
826 HttpServerProperties::NetworkStats network_stats; | |
827 network_stats.srtt = base::TimeDelta::FromMicroseconds(stats.srtt_us); | |
828 network_stats.bandwidth_estimate = stats.estimated_bandwidth; | |
829 http_server_properties_->SetServerNetworkStats(server_id.host_port_pair(), | |
830 network_stats); | |
831 } | |
jar (doing other things)
2014/05/22 21:03:22
nit: return
| |
832 | |
833 UMA_HISTOGRAM_COUNTS("Net.QuicHandshakeNotConfirmedNumPacketsReceived", | |
834 stats.packets_received); | |
835 | |
836 if (session_was_active) { | |
825 // TODO(rch): In the special case where the session has received no | 837 // TODO(rch): In the special case where the session has received no |
826 // packets from the peer, we should consider blacklisting this | 838 // packets from the peer, we should consider blacklisting this |
827 // differently so that we still race TCP but we don't consider the | 839 // differently so that we still race TCP but we don't consider the |
828 // session connected until the handshake has been confirmed. | 840 // session connected until the handshake has been confirmed. |
829 HistogramBrokenAlternateProtocolLocation( | 841 HistogramBrokenAlternateProtocolLocation( |
830 BROKEN_ALTERNATE_PROTOCOL_LOCATION_QUIC_STREAM_FACTORY); | 842 BROKEN_ALTERNATE_PROTOCOL_LOCATION_QUIC_STREAM_FACTORY); |
831 http_server_properties_->SetBrokenAlternateProtocol( | 843 http_server_properties_->SetBrokenAlternateProtocol( |
832 server_id.host_port_pair()); | 844 server_id.host_port_pair()); |
833 UMA_HISTOGRAM_COUNTS("Net.QuicHandshakeNotConfirmedNumPacketsReceived", | |
834 stats.packets_received); | |
835 return; | |
836 } | 845 } |
837 | |
838 HttpServerProperties::NetworkStats network_stats; | |
839 network_stats.srtt = base::TimeDelta::FromMicroseconds(stats.srtt_us); | |
840 network_stats.bandwidth_estimate = stats.estimated_bandwidth; | |
841 http_server_properties_->SetServerNetworkStats(server_id.host_port_pair(), | |
842 network_stats); | |
843 } | 846 } |
844 | 847 |
845 } // namespace net | 848 } // namespace net |
OLD | NEW |