Chromium Code Reviews| Index: net/http/http_stream_factory.cc |
| diff --git a/net/http/http_stream_factory.cc b/net/http/http_stream_factory.cc |
| index 2c7eed610948b07a67249626b36baebbdd9c03dd..4c21ffcef890c2565ee561e7c357f085483c9588 100644 |
| --- a/net/http/http_stream_factory.cc |
| +++ b/net/http/http_stream_factory.cc |
| @@ -51,19 +51,17 @@ void HttpStreamFactory::ProcessAlternativeServices( |
| !IsPortValid(alternative_service_entry.port)) { |
| continue; |
| } |
| - // Check if QUIC version is supported. |
| + // Check if QUIC version is supported. Filter supported QUIC versions. |
|
Bence
2017/06/16 14:43:40
I think this whole |match_found| logic should be r
Zhongyi Shi
2017/06/20 23:23:37
That's a fair good point. I have considered this b
Bence
2017/06/21 12:39:25
Thank you for the explanation.
Given that restart
|
| + QuicVersionVector advertised_versions; |
| if (protocol == kProtoQUIC && !alternative_service_entry.version.empty()) { |
| bool match_found = false; |
| for (QuicVersion supported : session->params().quic_supported_versions) { |
| for (uint16_t advertised : alternative_service_entry.version) { |
| if (supported == advertised) { |
| match_found = true; |
| - break; |
| + advertised_versions.push_back(supported); |
| } |
| } |
| - if (match_found) { |
| - break; |
| - } |
| } |
| if (!match_found) { |
| continue; |
| @@ -75,8 +73,16 @@ void HttpStreamFactory::ProcessAlternativeServices( |
| base::Time expiration = |
| base::Time::Now() + |
| base::TimeDelta::FromSeconds(alternative_service_entry.max_age); |
| - AlternativeServiceInfo alternative_service_info(alternative_service, |
| - expiration); |
| + AlternativeServiceInfo alternative_service_info; |
| + if (protocol == kProtoQUIC) { |
| + alternative_service_info = |
| + AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( |
| + alternative_service, expiration, advertised_versions); |
| + } else { |
| + alternative_service_info = |
| + AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
| + alternative_service, expiration); |
| + } |
| alternative_service_info_vector.push_back(alternative_service_info); |
| } |