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. |
+ 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); |
} |