From c5ee49662d7eec63f4235da1bcce2c47f5dacae9 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Mon, 23 May 2022 19:38:02 +0200 Subject: [PATCH] set the correct HTTP/3 ALPN for QUIC v2 --- http3/server.go | 8 +++----- http3/server_test.go | 10 +++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/http3/server.go b/http3/server.go index 645b2b3ea27..8d50f5b12a7 100644 --- a/http3/server.go +++ b/http3/server.go @@ -44,7 +44,7 @@ const ( ) func versionToALPN(v protocol.VersionNumber) string { - if v == protocol.Version1 { + if v == protocol.Version1 || v == protocol.Version2 { return nextProtoH3 } if v == protocol.VersionTLS || v == protocol.VersionDraft29 { @@ -63,11 +63,9 @@ func ConfigureTLSConfig(tlsConf *tls.Config) *tls.Config { return &tls.Config{ GetConfigForClient: func(ch *tls.ClientHelloInfo) (*tls.Config, error) { // determine the ALPN from the QUIC version used - proto := nextProtoH3Draft29 + proto := nextProtoH3 if qconn, ok := ch.Conn.(handshake.ConnWithVersion); ok { - if qconn.GetQUICVersion() == protocol.Version1 { - proto = nextProtoH3 - } + proto = versionToALPN(qconn.GetQUICVersion()) } config := tlsConf if tlsConf.GetConfigForClient != nil { diff --git a/http3/server_test.go b/http3/server_test.go index b5e23f775aa..e481867ef1c 100644 --- a/http3/server_test.go +++ b/http3/server_test.go @@ -819,23 +819,23 @@ var _ = Describe("Server", func() { ch = &tls.ClientHelloInfo{} }) - It("advertises draft by default", func() { + It("advertises v1 by default", func() { tlsConf = ConfigureTLSConfig(tlsConf) Expect(tlsConf.GetConfigForClient).NotTo(BeNil()) config, err := tlsConf.GetConfigForClient(ch) Expect(err).NotTo(HaveOccurred()) - Expect(config.NextProtos).To(Equal([]string{nextProtoH3Draft29})) + Expect(config.NextProtos).To(Equal([]string{nextProtoH3})) }) - It("advertises h3 for quic version 1", func() { + It("advertises h3-29 for draft-29", func() { tlsConf = ConfigureTLSConfig(tlsConf) Expect(tlsConf.GetConfigForClient).NotTo(BeNil()) - ch.Conn = newMockConn(protocol.Version1) + ch.Conn = newMockConn(protocol.VersionDraft29) config, err := tlsConf.GetConfigForClient(ch) Expect(err).NotTo(HaveOccurred()) - Expect(config.NextProtos).To(Equal([]string{nextProtoH3})) + Expect(config.NextProtos).To(Equal([]string{nextProtoH3Draft29})) }) })