// Copyright 2025 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build go1.24 package http3 import ( "crypto/tls" "golang.org/x/net/quic" ) func initConfig(config *quic.Config) *quic.Config { if config == nil { config = &quic.Config{} } // maybeCloneTLSConfig clones the user-provided tls.Config (but only once) // prior to us modifying it. needCloneTLSConfig := true maybeCloneTLSConfig := func() *tls.Config { if needCloneTLSConfig { config.TLSConfig = config.TLSConfig.Clone() needCloneTLSConfig = false } return config.TLSConfig } if config.TLSConfig == nil { config.TLSConfig = &tls.Config{} needCloneTLSConfig = false } if config.TLSConfig.MinVersion == 0 { maybeCloneTLSConfig().MinVersion = tls.VersionTLS13 } if config.TLSConfig.NextProtos == nil { maybeCloneTLSConfig().NextProtos = []string{"h3"} } return config }