From fb5fa2a839ef0ea9952e47f6d0e05b51a5a51a8d Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Fri, 22 Nov 2024 17:10:01 -0800 Subject: [PATCH] net/http: avoid redundant installation of HTTP/2 support in transport Previously, we'd skip installing the bundled HTTP/2 support if Transport.TLSNextProto is non-nil. With the addition of the Transport.Protocols field, we'll install HTTP/2 if Protocols contains HTTP2, even if TLSNextProto is non-nil. However, we shouldn't do so if it already contains an "h2" entry. Change-Id: Ib086473bb52f1b76d83b1df961d41360c605832c Reviewed-on: https://go-review.googlesource.com/c/go/+/631395 LUCI-TryBot-Result: Go LUCI Reviewed-by: Jonathan Amsterdam Auto-Submit: Damien Neil --- src/net/http/transport.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/net/http/transport.go b/src/net/http/transport.go index e2ce4dde3d..41e674188f 100644 --- a/src/net/http/transport.go +++ b/src/net/http/transport.go @@ -412,6 +412,10 @@ func (t *Transport) onceSetNextProtoDefaults() { } } + if _, ok := t.TLSNextProto["h2"]; ok { + // There's an existing HTTP/2 implementation installed. + return + } protocols := t.protocols() if !protocols.HTTP2() && !protocols.UnencryptedHTTP2() { return -- 2.48.1