From 2839cbdcff3d83fc56e2251c94ba51970353a61c Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Thu, 29 Oct 2020 15:04:55 +0700 Subject: [PATCH] make it possible to set VersionTLS to a draft version Go doesn't allow duplicate cases in a switch statement. --- http3/server.go | 12 +++++------- internal/protocol/version.go | 8 ++++++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/http3/server.go b/http3/server.go index 0bb7154fe..414f92661 100644 --- a/http3/server.go +++ b/http3/server.go @@ -34,15 +34,13 @@ const ( ) func versionToALPN(v protocol.VersionNumber) string { - //nolint:exhaustive - switch v { - case protocol.VersionTLS, protocol.VersionDraft29: + if v == protocol.VersionTLS || v == protocol.VersionDraft29 { return nextProtoH3Draft29 - case protocol.VersionDraft32: - return nextProtoH3Draft32 - default: - return "" } + if v == protocol.VersionDraft32 { + return nextProtoH3Draft32 + } + return "" } // contextKey is a value for use with context.WithValue. It's used as diff --git a/internal/protocol/version.go b/internal/protocol/version.go index 797f00094..9cbd017cb 100644 --- a/internal/protocol/version.go +++ b/internal/protocol/version.go @@ -35,6 +35,12 @@ func IsValidVersion(v VersionNumber) bool { } func (vn VersionNumber) String() string { + // For releases, VersionTLS will be set to a draft version. + // A switch statement can't contain duplicate cases. + if vn == VersionTLS && VersionTLS != VersionDraft29 && VersionTLS != VersionDraft32 { + return "TLS dev version (WIP)" + } + //nolint:exhaustive switch vn { case VersionWhatever: return "whatever" @@ -44,8 +50,6 @@ func (vn VersionNumber) String() string { return "draft-29" case VersionDraft32: return "draft-32" - case VersionTLS: - return "TLS dev version (WIP)" default: if vn.isGQUIC() { return fmt.Sprintf("gQUIC %d", vn.toGQUICVersion())