Index: net/http/http_server_properties_impl.cc |
diff --git a/net/http/http_server_properties_impl.cc b/net/http/http_server_properties_impl.cc |
index 4140e1d6e35ae5dd9ed1ad236a66779aee6d4fcf..65eb7fde8fd21cd50fbd9aaf6850460bb8a15e42 100644 |
--- a/net/http/http_server_properties_impl.cc |
+++ b/net/http/http_server_properties_impl.cc |
@@ -322,8 +322,16 @@ HttpServerPropertiesImpl::GetAlternativeServiceInfos( |
++it; |
continue; |
} |
- valid_alternative_service_infos.push_back( |
- AlternativeServiceInfo(alternative_service, it->expiration())); |
+ if (alternative_service.protocol == kProtoQUIC) { |
+ valid_alternative_service_infos.push_back( |
+ AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( |
+ alternative_service, it->expiration(), |
+ it->advertised_versions())); |
+ } else { |
+ valid_alternative_service_infos.push_back( |
+ AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
+ alternative_service, it->expiration())); |
+ } |
++it; |
} |
if (map_it->second.empty()) { |
@@ -358,8 +366,16 @@ HttpServerPropertiesImpl::GetAlternativeServiceInfos( |
++it; |
continue; |
} |
- valid_alternative_service_infos.push_back( |
- AlternativeServiceInfo(alternative_service, it->expiration())); |
+ if (alternative_service.protocol == kProtoQUIC) { |
+ valid_alternative_service_infos.push_back( |
+ AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( |
+ alternative_service, it->expiration(), |
+ it->advertised_versions())); |
+ } else { |
+ valid_alternative_service_infos.push_back( |
+ AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
+ alternative_service, it->expiration())); |
+ } |
++it; |
} |
if (map_it->second.empty()) { |
@@ -368,14 +384,31 @@ HttpServerPropertiesImpl::GetAlternativeServiceInfos( |
return valid_alternative_service_infos; |
} |
-bool HttpServerPropertiesImpl::SetAlternativeService( |
+bool HttpServerPropertiesImpl::SetHttp2AlternativeService( |
const url::SchemeHostPort& origin, |
const AlternativeService& alternative_service, |
base::Time expiration) { |
+ DCHECK(alternative_service.protocol != kProtoQUIC); |
Bence
2017/06/16 14:43:40
Optional: this is not necessary, as CreateHttp2Alt
Zhongyi Shi
2017/06/20 23:23:37
Done.
|
+ |
return SetAlternativeServices( |
origin, |
AlternativeServiceInfoVector( |
- /*size=*/1, AlternativeServiceInfo(alternative_service, expiration))); |
+ /*size=*/1, AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( |
+ alternative_service, expiration))); |
+} |
+ |
+bool HttpServerPropertiesImpl::SetQuicAlternativeService( |
+ const url::SchemeHostPort& origin, |
+ const AlternativeService& alternative_service, |
+ base::Time expiration, |
+ const QuicVersionVector& advertised_versions) { |
+ DCHECK(alternative_service.protocol == kProtoQUIC); |
+ |
+ return SetAlternativeServices( |
+ origin, AlternativeServiceInfoVector( |
+ /*size=*/1, |
+ AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( |
+ alternative_service, expiration, advertised_versions))); |
} |
bool HttpServerPropertiesImpl::SetAlternativeServices( |
@@ -415,6 +448,12 @@ bool HttpServerPropertiesImpl::SetAlternativeServices( |
changed = true; |
break; |
} |
+ // Also persist to disk if new entry has a different list of advertised |
+ // versions. |
+ if (old.advertised_versions() != new_it->advertised_versions()) { |
+ changed = true; |
+ break; |
+ } |
++new_it; |
} |
} |