Use AlpnForVersion() instead of ParseQuicVersionString() in TlsClientHandshaker::SetAlpn(). This avoids a potential (but I don't think actually reachable) confusion between, say, a QuicVersionLabel and an alpn string. PiperOrigin-RevId: 427268120
diff --git a/quic/core/tls_client_handshaker.cc b/quic/core/tls_client_handshaker.cc index f70bc1c..886edb7 100644 --- a/quic/core/tls_client_handshaker.cc +++ b/quic/core/tls_client_handshaker.cc
@@ -209,15 +209,17 @@ // Enable ALPS only for versions that use HTTP/3 frames. for (const std::string& alpn_string : alpns) { - ParsedQuicVersion version = ParseQuicVersionString(alpn_string); - if (!version.IsKnown() || !version.UsesHttp3()) { - continue; - } - if (SSL_add_application_settings( - ssl(), reinterpret_cast<const uint8_t*>(alpn_string.data()), - alpn_string.size(), nullptr, /* settings_len = */ 0) != 1) { - QUIC_BUG(quic_bug_10576_7) << "Failed to enable ALPS."; - return false; + for (const ParsedQuicVersion& version : session()->supported_versions()) { + if (!version.UsesHttp3() || AlpnForVersion(version) != alpn_string) { + continue; + } + if (SSL_add_application_settings( + ssl(), reinterpret_cast<const uint8_t*>(alpn_string.data()), + alpn_string.size(), nullptr, /* settings_len = */ 0) != 1) { + QUIC_BUG(quic_bug_10576_7) << "Failed to enable ALPS."; + return false; + } + break; } }