Make ALPN an array in QuicBufferedPacketStore
This is required to support QUIC+TLS where
ALPN is encoded as a list instead of a
single value.
gfe-relnote: refactor, no behavior change, not flag protected
PiperOrigin-RevId: 307922725
Change-Id: I08bbb0dc6db9264d17a64f569cf459ca590787c9
diff --git a/quic/core/quic_version_manager.cc b/quic/core/quic_version_manager.cc
index 105d23d..0a014be 100644
--- a/quic/core/quic_version_manager.cc
+++ b/quic/core/quic_version_manager.cc
@@ -50,6 +50,11 @@
return filtered_supported_versions_with_quic_crypto_;
}
+const std::vector<std::string>& QuicVersionManager::GetSupportedAlpns() {
+ MaybeRefilterSupportedVersions();
+ return filtered_supported_alpns_;
+}
+
void QuicVersionManager::MaybeRefilterSupportedVersions() {
static_assert(SupportedVersions().size() == 8u,
"Supported versions out of sync");
@@ -89,7 +94,8 @@
FilterSupportedVersions(allowed_supported_versions_);
filtered_supported_versions_with_quic_crypto_.clear();
filtered_transport_versions_.clear();
- for (ParsedQuicVersion version : filtered_supported_versions_) {
+ filtered_supported_alpns_.clear();
+ for (const ParsedQuicVersion& version : filtered_supported_versions_) {
auto transport_version = version.transport_version;
if (std::find(filtered_transport_versions_.begin(),
filtered_transport_versions_.end(),
@@ -99,7 +105,12 @@
if (version.handshake_protocol == PROTOCOL_QUIC_CRYPTO) {
filtered_supported_versions_with_quic_crypto_.push_back(version);
}
+ filtered_supported_alpns_.emplace_back(AlpnForVersion(version));
}
}
+void QuicVersionManager::AddCustomAlpn(const std::string& alpn) {
+ filtered_supported_alpns_.push_back(alpn);
+}
+
} // namespace quic