diff --git a/dialer/icmp/dialer.go b/dialer/icmp/dialer.go index b307522a..dff41ad2 100644 --- a/dialer/icmp/dialer.go +++ b/dialer/icmp/dialer.go @@ -133,7 +133,10 @@ func (d *icmpDialer) initSession(ctx context.Context, addr net.Addr, conn net.Pa } tlsCfg := d.options.TLSConfig - tlsCfg.NextProtos = []string{"h3", "quic/v1"} + tlsCfg = tlsCfg.Clone() + if len(tlsCfg.NextProtos) == 0 { + tlsCfg.NextProtos = []string{"h3", "quic/v1"} + } session, err := quic.DialEarly(ctx, conn, addr, tlsCfg, quicConfig) if err != nil { diff --git a/dialer/quic/dialer.go b/dialer/quic/dialer.go index 857ff5e1..55812787 100644 --- a/dialer/quic/dialer.go +++ b/dialer/quic/dialer.go @@ -115,7 +115,10 @@ func (d *quicDialer) initSession(ctx context.Context, addr net.Addr, conn net.Pa } tlsCfg := d.options.TLSConfig - tlsCfg.NextProtos = []string{"h3", "quic/v1"} + tlsCfg = tlsCfg.Clone() + if len(tlsCfg.NextProtos) == 0 { + tlsCfg.NextProtos = []string{"h3", "quic/v1"} + } session, err := quic.DialEarly(ctx, conn, addr, tlsCfg, quicConfig) if err != nil { diff --git a/listener/quic/listener.go b/listener/quic/listener.go index 455cc748..4f71d1cb 100644 --- a/listener/quic/listener.go +++ b/listener/quic/listener.go @@ -110,7 +110,10 @@ func (l *quicListener) Init(md md.Metadata) (err error) { } tlsCfg := l.options.TLSConfig - tlsCfg.NextProtos = []string{"h3", "quic/v1"} + tlsCfg = tlsCfg.Clone() + if len(tlsCfg.NextProtos) == 0 { + tlsCfg.NextProtos = []string{"h3", "quic/v1"} + } ln, err := quic.ListenEarly(conn, tlsCfg, config) if err != nil {