diff --git a/go.mod b/go.mod index a9d47b17a09..f997eccd962 100644 --- a/go.mod +++ b/go.mod @@ -90,10 +90,10 @@ require ( go.opentelemetry.io/otel/trace v1.45.0 go.uber.org/atomic v1.11.0 go.uber.org/automaxprocs v1.6.0 - golang.org/x/net v0.57.0 + golang.org/x/net v0.58.0 golang.org/x/sync v0.22.0 golang.org/x/time v0.15.0 - google.golang.org/grpc v1.83.0 + google.golang.org/grpc v1.83.2 google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 @@ -307,13 +307,13 @@ require ( go.uber.org/zap v1.27.1 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.54.0 // indirect + golang.org/x/crypto v0.55.0 // indirect golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect - golang.org/x/mod v0.37.0 // indirect + golang.org/x/mod v0.38.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sys v0.47.0 // indirect - golang.org/x/text v0.40.0 // indirect - golang.org/x/tools v0.47.0 // indirect + golang.org/x/text v0.41.0 // indirect + golang.org/x/tools v0.48.0 // indirect gonum.org/v1/gonum v0.17.0 // indirect google.golang.org/api v0.264.0 // indirect google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect diff --git a/go.sum b/go.sum index b2bc42c070b..db881309b7e 100644 --- a/go.sum +++ b/go.sum @@ -1186,8 +1186,8 @@ golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= -golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= -golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= +golang.org/x/crypto v0.55.0 h1:+KWHjbgOaAQ66dh/YlkZKHlz9ZUlq61AFirAR9ntP8M= +golang.org/x/crypto v0.55.0/go.mod h1:uq0V9dE/fzQuJtbnL+2EhWOE63vo164FY8xqEnV9xis= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1227,8 +1227,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ= -golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0= +golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= +golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1281,8 +1281,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= -golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= +golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= +golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1431,8 +1431,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= -golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= +golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= +golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1496,8 +1496,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.47.0 h1:7Kn5x/d1svx/PzryTsqeoZN4TZwqeH5pGWjefhLi/1Q= -golang.org/x/tools v0.47.0/go.mod h1:dFHnyTvFWY212G+h7ZY4Vsp/K3U4/7W9TyVaAul8uCA= +golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= +golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1671,8 +1671,8 @@ google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ5 google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.83.0 h1:JeNZEKJFbQxArAMl+hiytHauacDNqJUllNfmIMmpqnQ= -google.golang.org/grpc v1.83.0/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ= +google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU= +google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go b/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go index 8d99551feec..b1da45687cc 100644 --- a/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go +++ b/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (!amd64 && !loong64 && !ppc64le && !ppc64 && !s390x) || !gc || purego +//go:build (!amd64 && !loong64 && !ppc64le && !ppc64 && !riscv64 && !s390x) || !gc || purego package poly1305 diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go b/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go index 315b84ac39b..55041bf51d5 100644 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go +++ b/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build gc && !purego && (amd64 || loong64 || ppc64 || ppc64le) +//go:build gc && !purego && (amd64 || loong64 || ppc64 || ppc64le || riscv64) package poly1305 diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_riscv64.s b/vendor/golang.org/x/crypto/internal/poly1305/sum_riscv64.s new file mode 100644 index 00000000000..ce5eb3d43d9 --- /dev/null +++ b/vendor/golang.org/x/crypto/internal/poly1305/sum_riscv64.s @@ -0,0 +1,158 @@ +// Copyright 2026 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 gc && !purego + +#define LOAD64U(base, offset, t0, t1, t2, t3, dst) \ + MOVBU (offset+0*1)(base), t0; \ + MOVBU (offset+1*1)(base), t1; \ + MOVBU (offset+2*1)(base), t2; \ + MOVBU (offset+3*1)(base), t3; \ + SLL $8, t1; \ + SLL $16, t2; \ + SLL $24, t3; \ + OR t1, t0; \ + OR t3, t2; \ + OR t2, t0, dst; \ + MOVBU (offset+4*1)(base), t0; \ + MOVBU (offset+5*1)(base), t1; \ + MOVBU (offset+6*1)(base), t2; \ + MOVBU (offset+7*1)(base), t3; \ + SLL $32, t0; \ + SLL $40, t1; \ + SLL $48, t2; \ + SLL $56, t3; \ + OR t1, t0; \ + OR t3, t2; \ + OR t2, t0; \ + OR t0, dst + +// func update(state *macState, msg []byte) +TEXT ·update(SB), $0-32 + MOV state+0(FP), X5 + MOV msg_base+8(FP), X6 + MOV msg_len+16(FP), X7 + + MOV $16, X8 + + AND $7, X6, X28 + + MOV (0*8)(X5), X9 // h0 + MOV (1*8)(X5), X10 // h1 + MOV (2*8)(X5), X11 // h2 + MOV (3*8)(X5), X12 // r0 + MOV (4*8)(X5), X13 // r1 + + BLT X7, X8, tail + +loop: + BEQZ X28, aligned_load + + LOAD64U(X6, 0*8, X16, X18, X19, X20, X15) // msg[0:8] + LOAD64U(X6, 1*8, X16, X18, X19, X20, X17) // msg[8:16] + JMP block + +aligned_load: + MOV (0*8)(X6), X15 // msg[0:8] + MOV (1*8)(X6), X17 // msg[8:16] + +block: + ADD X15, X9 // h0 (x1 + y1 = z1', if z1' < x1 then z1' overflow) + SLTU X15, X9, X19 // h0.carry + ADD X17, X10, X22 + SLTU X17, X22, X23 + ADD X22, X19, X10 // h1 + SLTU X22, X10, X19 + OR X23, X19 // h1.carry + ADD $1, X19 + ADD X19, X11 // h2 + + ADD $16, X6 // msg = msg[16:] + +multiply: + MULHU X9, X12, X16 // h0r0.hi + MUL X9, X12, X15 // h0r0.lo + MULHU X10, X12, X17 // h1r0.hi + MUL X10, X12, X14 // h1r0.lo + ADD X14, X16 + SLTU X14, X16, X19 + ADD X19, X17 + MUL X11, X12, X20 + ADD X17, X20 + MULHU X9, X13, X17 // h0r1.hi + MUL X9, X13, X14 // h0r1.lo + ADD X14, X16 + SLTU X14, X16, X19 + ADD X19, X17 + MOV X17, X9 + MUL X11, X13, X21 // h2r1 + MULHU X10, X13, X17 // h1r1.hi + MUL X10, X13, X14 // h1r1.lo + ADD X14, X20 + ADD X17, X21, X22 + SLTU X14, X20, X19 + ADD X22, X19, X21 + ADD X9, X20 + SLTU X9, X20, X19 + ADD X19, X21 + AND $3, X20, X11 + AND $-4, X20, X18 + ADD X18, X15, X9 + ADD X21, X16, X22 + SLTU X18, X9, X19 + SLTU X21, X22, X23 + ADD X22, X19, X10 + SLTU X22, X10, X19 + OR X19, X23, X19 + ADD X19, X11 + SLL $62, X21, X22 + SRL $2, X20, X23 + SRL $2, X21, X21 + OR X22, X23, X20 + ADD X20, X9, X9 + ADD X21, X10, X22 + SLTU X20, X9, X19 + SLTU X21, X22, X23 + ADD X22, X19, X10 + SLTU X22, X10, X19 + OR X19, X23, X19 + ADD X19, X11, X11 + + SUB $16, X7, X7 + BGE X7, X8, loop + +tail: + BEQ X7, X0, done + MOV $1, X15 + MOV $0, X16 + ADD X7, X6, X6 + +flush_buffer: + MOVBU -1(X6), X20 + SRL $56, X15, X19 + SLL $8, X16, X23 + SLL $8, X15, X15 + OR X19, X23, X16 + XOR X20, X15 + SUB $1, X7, X7 + SUB $1, X6, X6 + BNE X7, X0, flush_buffer + + ADD X15, X9 + SLTU X15, X9, X19 + ADD X16, X10, X22 + SLTU X16, X22, X23 + ADD X22, X19, X10 + SLTU X22, X10, X19 + OR X23, X19 + ADD X19, X11 + + MOV $16, X7 + JMP multiply + +done: + MOV X9, (0*8)(X5) // h0 + MOV X10, (1*8)(X5) + MOV X11, (2*8)(X5) + RET diff --git a/vendor/golang.org/x/net/http/httpproxy/proxy.go b/vendor/golang.org/x/net/http/httpproxy/proxy.go index 5ab499b0bcb..1e260f4444a 100644 --- a/vendor/golang.org/x/net/http/httpproxy/proxy.go +++ b/vendor/golang.org/x/net/http/httpproxy/proxy.go @@ -80,18 +80,19 @@ type config struct { domainMatchers []matcher } -// FromEnvironment returns a Config instance populated from the -// environment variables HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the -// lowercase versions thereof). +// FromEnvironment returns a Config instance populated from the environment +// variables HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the lowercase versions +// thereof). When both the uppercase and lowercase versions are provided, the +// lowercase versions are prioritized. // // The environment values may be either a complete URL or a // "host[:port]", in which case the "http" scheme is assumed. An error // is returned if the value is a different form. func FromEnvironment() *Config { return &Config{ - HTTPProxy: getEnvAny("HTTP_PROXY", "http_proxy"), - HTTPSProxy: getEnvAny("HTTPS_PROXY", "https_proxy"), - NoProxy: getEnvAny("NO_PROXY", "no_proxy"), + HTTPProxy: getEnvAny("http_proxy", "HTTP_PROXY"), + HTTPSProxy: getEnvAny("https_proxy", "HTTPS_PROXY"), + NoProxy: getEnvAny("no_proxy", "NO_PROXY"), CGI: os.Getenv("REQUEST_METHOD") != "", } } diff --git a/vendor/golang.org/x/net/http2/hpack/encode.go b/vendor/golang.org/x/net/http2/hpack/encode.go index 46219da2b01..e6d0c265acf 100644 --- a/vendor/golang.org/x/net/http2/hpack/encode.go +++ b/vendor/golang.org/x/net/http2/hpack/encode.go @@ -39,7 +39,6 @@ func NewEncoder(w io.Writer) *Encoder { tableSizeUpdate: false, w: w, } - e.dynTab.table.init() e.dynTab.setMaxSize(initialHeaderTableSize) return e } diff --git a/vendor/golang.org/x/net/http2/hpack/hpack.go b/vendor/golang.org/x/net/http2/hpack/hpack.go index 7a1d976696a..ecd3eeca99a 100644 --- a/vendor/golang.org/x/net/http2/hpack/hpack.go +++ b/vendor/golang.org/x/net/http2/hpack/hpack.go @@ -105,7 +105,6 @@ func NewDecoder(maxDynamicTableSize uint32, emitFunc func(f HeaderField)) *Decod emitEnabled: true, firstField: true, } - d.dynTab.table.init() d.dynTab.allowedMaxSize = maxDynamicTableSize d.dynTab.setMaxSize(maxDynamicTableSize) return d diff --git a/vendor/golang.org/x/net/http2/hpack/tables.go b/vendor/golang.org/x/net/http2/hpack/tables.go index 8cbdf3f019c..3bd7eb75332 100644 --- a/vendor/golang.org/x/net/http2/hpack/tables.go +++ b/vendor/golang.org/x/net/http2/hpack/tables.go @@ -31,10 +31,18 @@ type headerFieldTable struct { // byName maps a HeaderField name to the unique id of the newest entry with // the same name. See above for a definition of "unique id". + // + // byName and byNameValue are used only by search, which is only called + // for tables used by encoders. For tables used only by decoders, the + // maps are never built, as a memory optimization for servers with many + // mostly-idle connections, each pinning a dynamic table. The maps are + // built lazily by the first search call and are nil until then. The two + // maps are always both nil or both non-nil. byName map[string]uint64 // byNameValue maps a HeaderField name/value pair to the unique id of the newest // entry with the same name and value. See above for a definition of "unique id". + // See byName for when this map is non-nil. byNameValue map[pairNameValue]uint64 } @@ -42,9 +50,17 @@ type pairNameValue struct { name, value string } -func (t *headerFieldTable) init() { - t.byName = make(map[string]uint64) - t.byNameValue = make(map[pairNameValue]uint64) +// buildMaps initializes byName and byNameValue from ents. +func (t *headerFieldTable) buildMaps() { + t.byName = make(map[string]uint64, len(t.ents)) + t.byNameValue = make(map[pairNameValue]uint64, len(t.ents)) + for k, f := range t.ents { + // Map to the newest matching entry: later (newer) entries + // overwrite earlier ones, matching addEntry's behavior. + id := t.evictCount + uint64(k) + 1 + t.byName[f.Name] = id + t.byNameValue[pairNameValue{f.Name, f.Value}] = id + } } // len reports the number of entries in the table. @@ -54,9 +70,11 @@ func (t *headerFieldTable) len() int { // addEntry adds a new entry. func (t *headerFieldTable) addEntry(f HeaderField) { - id := uint64(t.len()) + t.evictCount + 1 - t.byName[f.Name] = id - t.byNameValue[pairNameValue{f.Name, f.Value}] = id + if t.byName != nil { + id := uint64(t.len()) + t.evictCount + 1 + t.byName[f.Name] = id + t.byNameValue[pairNameValue{f.Name, f.Value}] = id + } t.ents = append(t.ents, f) } @@ -65,14 +83,16 @@ func (t *headerFieldTable) evictOldest(n int) { if n > t.len() { panic(fmt.Sprintf("evictOldest(%v) on table with %v entries", n, t.len())) } - for k := 0; k < n; k++ { - f := t.ents[k] - id := t.evictCount + uint64(k) + 1 - if t.byName[f.Name] == id { - delete(t.byName, f.Name) - } - if p := (pairNameValue{f.Name, f.Value}); t.byNameValue[p] == id { - delete(t.byNameValue, p) + if t.byName != nil { + for k := 0; k < n; k++ { + f := t.ents[k] + id := t.evictCount + uint64(k) + 1 + if t.byName[f.Name] == id { + delete(t.byName, f.Name) + } + if p := (pairNameValue{f.Name, f.Value}); t.byNameValue[p] == id { + delete(t.byNameValue, p) + } } } copy(t.ents, t.ents[n:]) @@ -100,6 +120,9 @@ func (t *headerFieldTable) evictOldest(n int) { // // See Section 2.3.3. func (t *headerFieldTable) search(f HeaderField) (i uint64, nameValueMatch bool) { + if t.byName == nil { + t.buildMaps() + } if !f.Sensitive { if id := t.byNameValue[pairNameValue{f.Name, f.Value}]; id != 0 { return t.idToIndex(id), true diff --git a/vendor/golang.org/x/net/http2/transport_wrap.go b/vendor/golang.org/x/net/http2/transport_wrap.go index 534e77ab963..741fb97062e 100644 --- a/vendor/golang.org/x/net/http2/transport_wrap.go +++ b/vendor/golang.org/x/net/http2/transport_wrap.go @@ -237,32 +237,40 @@ type ClientConn struct { } func (cc *ClientConn) roundTrip(req *http.Request) (*http.Response, error) { - err := func() error { + haveReservation, err := func() (bool, error) { cc.mu.Lock() defer cc.mu.Unlock() if cc.doNotReuse { - return errClientConnUnusable - } - cc.roundTrips++ - if cc.reserved > 0 { - // We've already reserved a concurrency slot for this request. - cc.reserved-- - } else if cc.cc.Reserve() != nil { - // We don't seem to have an available concurrency slot, - // so bump the pending count (requests waiting for a slot). - cc.pending++ + return false, errClientConnUnusable } + // ClientConn.Shutdown will not shut down the conn while // cc.starting > 0 or cc.cc.InFlight() > 0. // // The starting state covers the gap between us deciding to // start sending the request, and actually sending it. cc.starting++ - return nil + + cc.roundTrips++ + if cc.reserved == 0 { + // We do not have a concurrency slot reserved for this request. + return false, nil + } + cc.reserved-- + return true, nil }() if err != nil { return nil, err } + // If we have no reservation, try to acquire one. + // (This must be done without cc.mu held, since Reserve may call back to the state hook.) + if !haveReservation && cc.cc.Reserve() != nil { + // We could not acquire a concurrency slot, so bump the pending count + // (requests waiting for a slot). + cc.mu.Lock() + cc.pending++ + cc.mu.Unlock() + } resp, err := cc.cc.RoundTrip(req) cc.mu.Lock() cc.starting-- @@ -293,16 +301,21 @@ func (cc *ClientConn) ping(ctx context.Context) error { } func (cc *ClientConn) reserveNewRequest() bool { + if err := cc.cc.Reserve(); err != nil { + return false + } + reserved := true cc.mu.Lock() - defer cc.mu.Unlock() if cc.doNotReuse { - return false + reserved = false + } else { + cc.reserved++ } - if err := cc.cc.Reserve(); err != nil { - return false + cc.mu.Unlock() + if !reserved { + cc.cc.Release() } - cc.reserved++ - return true + return reserved } func (cc *ClientConn) setDoNotReuse() { diff --git a/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go index 0d6d0bced0f..9c7401c9ba5 100644 --- a/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go +++ b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go @@ -30,6 +30,7 @@ import ( "slices" "strconv" "strings" + "sync" "golang.org/x/tools/internal/typesinternal" ) @@ -126,7 +127,8 @@ func For(obj types.Object) (Path, error) { // An Encoder amortizes the cost of encoding the paths of multiple objects. // The zero value of an Encoder is ready to use. type Encoder struct { - pkgIndex map[*types.Package]*pkgIndex + pkgIndexMu sync.Mutex + pkgIndex map[*types.Package]*pkgIndex } // A traversal encapsulates the state of a single traversal of the object/type graph. @@ -191,6 +193,8 @@ type pkgIndex struct { // For returns the path to an object relative to its package, // or an error if the object is not accessible from the package's Scope. // +// For is safe for concurrent use. +// // The For function guarantees to return a path only for the following objects: // - package-level types // - exported package-level non-types @@ -320,6 +324,9 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { panic(obj) } + enc.pkgIndexMu.Lock() + defer enc.pkgIndexMu.Unlock() + // 4. Search the object/type graph for the path to // the var (field/param/result) or method. ix, ok := enc.pkgIndex[pkg] diff --git a/vendor/golang.org/x/tools/internal/stdlib/deps.go b/vendor/golang.org/x/tools/internal/stdlib/deps.go index 0f73c719cd1..b049e5f9775 100644 --- a/vendor/golang.org/x/tools/internal/stdlib/deps.go +++ b/vendor/golang.org/x/tools/internal/stdlib/deps.go @@ -12,386 +12,387 @@ type pkginfo struct { } var deps = [...]pkginfo{ - {"archive/tar", "\x03{\x03F>\x01\n\x01&\x01\x01\x02\x05\b\x02\x01\x02\x02\r"}, - {"archive/zip", "\x02\x04j\x0e\x03\x12\x022>\x01-\x05\x01\x0f\x03\x02\x0f\x04"}, - {"bufio", "\x03{\x87\x01F\x15"}, - {"bytes", "~*]\x03\fJ\x02\x02"}, + {"archive/tar", "\x03|\x03F>\x01\n\x01&\x01\x01\x02\x05\b\x02\x01\x02\x02\r"}, + {"archive/zip", "\x02\x04k\x0e\x03\x12\x022>\x01-\x05\x01\x0f\x03\x02\x0f\x04"}, + {"bufio", "\x03|\x87\x01F\x15"}, + {"bytes", "\x7f*]\x03\fJ\x02\x02"}, {"cmp", ""}, - {"compress/bzip2", "\x02\x02\x81\x02C"}, - {"compress/flate", "\x02|\x03\x84\x01\f\x034\x02\x03"}, - {"compress/gzip", "\x02\x04j\x0e\x03\x14pW"}, - {"compress/lzw", "\x02|\x03\x84\x01"}, - {"compress/zlib", "\x02\x04j\x0e\x03\x12\x01q"}, - {"container/heap", "\xc9\x02"}, + {"compress/bzip2", "\x02\x02\x82\x02C"}, + {"compress/flate", "\x02}\x03\x84\x01\f\x034\x02\x03"}, + {"compress/gzip", "\x02\x04k\x0e\x03\x14pW"}, + {"compress/lzw", "\x02}\x03\x84\x01"}, + {"compress/zlib", "\x02\x04k\x0e\x03\x12\x01q"}, + {"container/heap", "\xca\x02"}, {"container/list", ""}, {"container/ring", ""}, - {"context", "~]r\x01\x0e"}, - {"crypto", "\x93\x01rE"}, - {"crypto/aes", "\x10\v\n\xa5\x02"}, - {"crypto/cipher", "\x03\"\x01\x01 \x13$+\\"}, - {"crypto/des", "\x10\x17 7+\xa1\x01\x03"}, - {"crypto/dsa", "G\x034\x87\x01\r"}, - {"crypto/ecdh", "\x03\v\r\x11\x04\x17\x03\x10$\x87\x01"}, - {"crypto/ecdsa", "\x0e\x05\x03\x05\x01\x11\b\v\x06\x01\x03\x0f\x01$\x87\x01\r\x05O\x01"}, - {"crypto/ed25519", "\x0e \x12\a\x03\t\a$I>E"}, - {"crypto/elliptic", "5I\x87\x01\r;"}, - {"crypto/fips140", "$\x05\x9e\x01\x9b\x01"}, - {"crypto/hkdf", "1\x15\x017\x15"}, - {"crypto/hmac", "\x1b\x17\x14\x01\x139"}, - {"crypto/hpke", "\x03\v\x02\x03\x04\x01\r\x01\x05\x1f\x06\a\x01\x01%\x03\x12\x16\x9f\x01\x1d"}, - {"crypto/internal/boring", "\x0e\x02\x0eu"}, - {"crypto/internal/boring/bbig", "\x1b\xf7\x01P"}, - {"crypto/internal/boring/bcache", "\xce\x02\x14"}, + {"context", "\x7f]r\x01\x0e"}, + {"crypto", "\x94\x01rE"}, + {"crypto/aes", "\x10\v\v\xa5\x02"}, + {"crypto/cipher", "\x03#\x01\x01 \x13$+\\"}, + {"crypto/des", "\x10\x18 7+\xa1\x01\x03"}, + {"crypto/dsa", "H\x034\x87\x01\r"}, + {"crypto/ecdh", "\x03\v\r\x12\x04\x17\x03\x10$\x87\x01"}, + {"crypto/ecdsa", "\x0e\x05\x03\x05\x01\x12\b\v\x06\x01\x03\x0f\x01$\x87\x01\r\x05O\x01"}, + {"crypto/ed25519", "\x0e!\x12\a\x03\t\a$I>E"}, + {"crypto/elliptic", "6I\x87\x01\r;"}, + {"crypto/fips140", "%\x05\x9e\x01\x9b\x01"}, + {"crypto/hkdf", "2\x15\x017\x15"}, + {"crypto/hmac", "\x1b\x18\x14\x01\x139"}, + {"crypto/hpke", "\x03\v\x02\x03\x04\x01\x0e\x01\x05\x1f\x06\a\x01\x01%\x03\x12\x16\x9f\x01\x1d"}, + {"crypto/internal/boring", "\x0e\x02\x0ev"}, + {"crypto/internal/boring/bbig", "\x1b\xf8\x01P"}, + {"crypto/internal/boring/bcache", "\xcf\x02\x14"}, {"crypto/internal/boring/sig", ""}, {"crypto/internal/constanttime", ""}, - {"crypto/internal/cryptotest", "\x03\r\v\t%\x11\x1a\r\x12\x12!\x04\x06\n\x19\x01\x11\x11\x1d\x01\a\x03\x02\b\x02\x01\x05\f"}, - {"crypto/internal/cryptotest/wycheproof", "\x0e\x12S\x01\f\x01r@\x05\x03\x15\x10"}, - {"crypto/internal/entropy", "L"}, - {"crypto/internal/entropy/v1.0.0", "E9\x96\x01:\x14"}, - {"crypto/internal/fips140", "D:\xc2\x01\v\x17"}, - {"crypto/internal/fips140/aes", "\x03!\x03\x02\x14\x05\x01\x01\x055\x96\x016"}, - {"crypto/internal/fips140/aes/gcm", "$\x01\x02\x02\x02\x12\x05\x01\x065\x93\x01"}, - {"crypto/internal/fips140/alias", "\xe2\x02"}, - {"crypto/internal/fips140/bigmod", ")\x19\x01\x065\x96\x01"}, - {"crypto/internal/fips140/check", "$\x0e\a\t\x02\xc1\x01]"}, - {"crypto/internal/fips140/check/checktest", ")\x97\x02\""}, - {"crypto/internal/fips140/drbg", "\x03 \x01\x01\x04\x14\x05\n2\x87\x01\x0f9\x01"}, - {"crypto/internal/fips140/ecdh", "\x03!\x05\x02\n\r<\x87\x01\x0f9"}, - {"crypto/internal/fips140/ecdsa", "\x03!\x04\x01\x02\a\x03\x06C\x15r\x0f9"}, - {"crypto/internal/fips140/ed25519", "\x03!\x05\x02\x04\fC\xcc\x01\x03"}, - {"crypto/internal/fips140/edwards25519", "\x1f\n\a\x12<\x96\x019"}, - {"crypto/internal/fips140/edwards25519/field", ")\x14\x05<\x96\x01"}, - {"crypto/internal/fips140/hkdf", "\x03!\x05\t\aE\x15"}, - {"crypto/internal/fips140/hmac", "\x03!\x15\x01\x01C\x15"}, - {"crypto/internal/fips140/mldsa", "\x03\x1c\x05\x05\x02\x0e\x01\x03\x05<\x96\x019"}, - {"crypto/internal/fips140/mlkem", "\x03!\x05\x02\x0f\x03\x05<\xcf\x01"}, - {"crypto/internal/fips140/nistec", "\x1f\n\r\f<\x96\x01,\r\x15"}, - {"crypto/internal/fips140/nistec/fiat", ")\x14A\x96\x01"}, - {"crypto/internal/fips140/pbkdf2", "\x03!\x05\t\aE\x15"}, - {"crypto/internal/fips140/rsa", "\x03\x1c\x05\x04\x01\x02\x0e\x01\x01\x02A\x15rH"}, - {"crypto/internal/fips140/sha256", "\x03!\x1e\x01\x065\x15\x81\x01"}, - {"crypto/internal/fips140/sha3", "\x03!\x19\x05\x01;\x96\x01N"}, - {"crypto/internal/fips140/sha512", "\x03!\x1e\x01\x065\x15\x81\x01"}, - {"crypto/internal/fips140/ssh", ")j"}, - {"crypto/internal/fips140/subtle", "\x1f\b\x1b\xd2\x01"}, - {"crypto/internal/fips140/tls12", "\x03!\x05\t\a\x02C\x15"}, - {"crypto/internal/fips140/tls13", "\x03!\x05\b\b\t<\x15"}, - {"crypto/internal/fips140cache", "\xc0\x02\r."}, + {"crypto/internal/cryptotest", "\x03\r\v\n%\x11\x1a\r\x12\x12!\x04\x06\n\x19\x01\x11\x11\x1d\x01\a\x03\x02\b\x02\x01\x05\f"}, + {"crypto/internal/cryptotest/wycheproof", "\x0e\x12T\x01\f\x01r@\x05\x03\x15\x10"}, + {"crypto/internal/cryptotest/x509limbo", "u\n\x03\xba\x01\x03\x1e"}, + {"crypto/internal/entropy", "M"}, + {"crypto/internal/entropy/v1.0.0", "F9\x96\x01:\x14"}, + {"crypto/internal/fips140", "E:\xc2\x01\v\x17"}, + {"crypto/internal/fips140/aes", "\x03\"\x03\x02\x14\x05\x01\x01\x055\x96\x016"}, + {"crypto/internal/fips140/aes/gcm", "%\x01\x02\x02\x02\x12\x05\x01\x065\x93\x01"}, + {"crypto/internal/fips140/alias", "\xe3\x02"}, + {"crypto/internal/fips140/bigmod", "*\x19\x01\x065\x96\x01"}, + {"crypto/internal/fips140/check", "%\x0e\a\t\x02\xc1\x01]"}, + {"crypto/internal/fips140/check/checktest", "*\x97\x02\""}, + {"crypto/internal/fips140/drbg", "\x03!\x01\x01\x04\x14\x05\n2\x87\x01\x0f9\x01"}, + {"crypto/internal/fips140/ecdh", "\x03\"\x05\x02\n\r<\x87\x01\x0f9"}, + {"crypto/internal/fips140/ecdsa", "\x03\"\x04\x01\x02\a\x03\x06C\x15r\x0f9"}, + {"crypto/internal/fips140/ed25519", "\x03\"\x05\x02\x04\fC\xcc\x01\x03"}, + {"crypto/internal/fips140/edwards25519", "\x1f\v\a\x12<\x96\x019"}, + {"crypto/internal/fips140/edwards25519/field", "*\x14\x05<\x96\x01"}, + {"crypto/internal/fips140/hkdf", "\x03\"\x05\t\aE\x15"}, + {"crypto/internal/fips140/hmac", "\x03\"\x15\x01\x01C\x15"}, + {"crypto/internal/fips140/mldsa", "\x03\x1c\x06\x05\x02\x0e\x01\x03\x05<\x96\x019"}, + {"crypto/internal/fips140/mlkem", "\x03\"\x05\x02\x0f\x03\x05<\xcf\x01"}, + {"crypto/internal/fips140/nistec", "\x1f\v\r\f<\x96\x01,\r\x15"}, + {"crypto/internal/fips140/nistec/fiat", "*\x14A\x96\x01"}, + {"crypto/internal/fips140/pbkdf2", "\x03\"\x05\t\aE\x15"}, + {"crypto/internal/fips140/rsa", "\x03\x1c\x06\x04\x01\x02\x0e\x01\x01\x02A\x15rH"}, + {"crypto/internal/fips140/sha256", "\x03\"\x1e\x01\x065\x15\x81\x01"}, + {"crypto/internal/fips140/sha3", "\x03\"\x19\x05\x01;\x96\x01N"}, + {"crypto/internal/fips140/sha512", "\x03\"\x1e\x01\x065\x15\x81\x01"}, + {"crypto/internal/fips140/ssh", "*j"}, + {"crypto/internal/fips140/subtle", "\x1f\t\x1b\xd2\x01"}, + {"crypto/internal/fips140/tls12", "\x03\"\x05\t\a\x02C\x15"}, + {"crypto/internal/fips140/tls13", "\x03\"\x05\b\b\t<\x15"}, + {"crypto/internal/fips140cache", "\xc1\x02\r."}, {"crypto/internal/fips140deps", ""}, - {"crypto/internal/fips140deps/byteorder", "\xa9\x01"}, - {"crypto/internal/fips140deps/cpu", "\xbe\x01\b"}, - {"crypto/internal/fips140deps/godebug", "\xc7\x01"}, - {"crypto/internal/fips140deps/time", "\xe2\x02"}, - {"crypto/internal/fips140hash", ":\x1e;\xcf\x01"}, - {"crypto/internal/fips140only", "\x17\x14\x0e\x01\x01Xr"}, + {"crypto/internal/fips140deps/byteorder", "\xaa\x01"}, + {"crypto/internal/fips140deps/cpu", "\xbf\x01\b"}, + {"crypto/internal/fips140deps/godebug", "\xc8\x01"}, + {"crypto/internal/fips140deps/time", "\xe3\x02"}, + {"crypto/internal/fips140hash", ";\x1e;\xcf\x01"}, + {"crypto/internal/fips140only", "\x17\x15\x0e\x01\x01Xr"}, {"crypto/internal/fips140test", ""}, - {"crypto/internal/impl", "\xcb\x02"}, - {"crypto/internal/rand", "\x1b\x10 |>]"}, - {"crypto/internal/randutil", "\x85\x02\x12"}, - {"crypto/internal/sysrand", "~r!\"\r\r\x01\x01\r\x06"}, - {"crypto/internal/sysrand/internal/seccomp", "~"}, - {"crypto/md5", "\x0e97\x15\x16k"}, - {"crypto/mldsa", "\x0e%K\x87\x01"}, - {"crypto/mlkem", "\x0e&"}, - {"crypto/mlkem/mlkemtest", "4\x13\t."}, - {"crypto/pbkdf2", "7\x0f\x017\x15"}, - {"crypto/rand", "\x1b\x10\x1c\x034\x87\x01\rP"}, - {"crypto/rc4", "' 7\xcc\x01"}, - {"crypto/rsa", "\x0e\r\x01\f\x10\x0e\x01\x03\t\a$\x03\x124>\f\x01"}, - {"crypto/sha1", "\x0e\r,\x025\x15\x16\x15V"}, - {"crypto/sha256", "\x0e\r\x1eZ"}, - {"crypto/sha3", "\x0e,Y\xcf\x01"}, - {"crypto/sha512", "\x0e\r X"}, - {"crypto/subtle", "\x1f\x1e\xa9\x01|"}, - {"crypto/tls", "\x03\b\x02\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\n\x01\x18\x01\x0f\x01\x01\x03\x01\x01\x01\x01\x02\x01\x02\x01\x1f\x02\x03\x12\x16\x15\t>\x16\x18\r\b\x01\x01\x01\x02\x01\x0e\x06\x03\x01\x15"}, - {"crypto/tls/internal/fips140tls", "\x17\xb7\x02"}, - {"crypto/x509", "\x03\v\x01\x01\x01\x01\x01\x01\x01\x01\x017\x01\x06\x01\x01\x02\x05\x0f\x06\t\x02\x03F\x03;\x01\x02\b\x01\x01\x02\a\x12\x05\x01\x06\a\b\x02\x01\x02\x0f\x02\x01\x01\x02\x04\x01"}, - {"crypto/x509/pkix", "m\x06\x0e\x91\x019\x11"}, - {"database/sql", "\x03\nS\x01\x1d\x03\x84\x01\v\a$\x05\b\x02\x03\x01\x0e\x02\x02\x02\x01"}, - {"database/sql/driver", "\rT\x1d\x03\xba\x01\x0f\x12\a"}, + {"crypto/internal/impl", "\xcc\x02"}, + {"crypto/internal/rand", "\x1b\x11 |>]"}, + {"crypto/internal/randutil", "\x86\x02\x12"}, + {"crypto/internal/sysrand", "\x7fr!\"\r\r\x01\x01\r\x06"}, + {"crypto/internal/sysrand/internal/seccomp", "\x7f"}, + {"crypto/md5", "\x0e:7\x15\x16k"}, + {"crypto/mldsa", "\x0e&K\x87\x01"}, + {"crypto/mlkem", "\x0e'"}, + {"crypto/mlkem/mlkemtest", "5\x13\t."}, + {"crypto/pbkdf2", "8\x0f\x017\x15"}, + {"crypto/rand", "\x1b\x11\x1c\x034\x87\x01\rP"}, + {"crypto/rc4", "( 7\xcc\x01"}, + {"crypto/rsa", "\x0e\r\x01\r\x10\x0e\x01\x03\t\a$\x03\x124>\f\x01"}, + {"crypto/sha1", "\x0e\r-\x025\x15\x16\x15V"}, + {"crypto/sha256", "\x0e\r\x1fZ"}, + {"crypto/sha3", "\x0e-Y\xcf\x01"}, + {"crypto/sha512", "\x0e\r!X"}, + {"crypto/subtle", "\x1f\x1f\xa9\x01|"}, + {"crypto/tls", "\x03\b\x02\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\v\x01\x18\x01\x0f\x01\x01\x03\x01\x01\x01\x01\x02\x01\x02\x01\x1f\x02\x03\x12\x16\x15\t>\x16\x18\r\b\x01\x01\x01\x02\x01\x0e\x06\x03\x01\x15"}, + {"crypto/tls/internal/fips140tls", "\x17\xb8\x02"}, + {"crypto/x509", "\x03\v\x01\x01\x01\x01\x01\x01\x01\x01\x018\x01\x06\x01\x01\x02\x05\x0f\x06\t\x02\x03F\x03;\x01\x02\b\x01\x01\x02\a\x12\x05\x01\x06\a\b\x02\x01\x02\x0f\x02\x01\x01\x02\x04\x01"}, + {"crypto/x509/pkix", "n\x06\x0e\x91\x019\x11"}, + {"database/sql", "\x03\nT\x01\x1d\x03\x84\x01\v\a$\x05\b\x02\x03\x01\x0e\x02\x02\x02\x01"}, + {"database/sql/driver", "\rU\x1d\x03\xba\x01\x0f\x12\a"}, {"database/sql/internal", ""}, - {"debug/buildinfo", "\x03a\x02\x01\x01\b\x0e\x03h\x1a\x02\x01-\x0f "}, - {"debug/dwarf", "\x03m\x0e\x03\x84\x013\x11\x01\x01"}, - {"debug/elf", "\x03\x06Z\r\x0e\x03h\x1b\x01\f\"\x17\x01\x17"}, - {"debug/gosym", "\x03m\x11#\xa5\x01\x01\x01\x02"}, - {"debug/macho", "\x03\x06Z\r\x11h\x1c.\x17\x01"}, - {"debug/pe", "\x03\x06Z\r\x0e\x03h\x1c.\x17\x01\x17"}, - {"debug/plan9obj", "p\x0e\x03h\x1c."}, - {"embed", "~*D\x19\x01V"}, + {"debug/buildinfo", "\x03b\x02\x01\x01\b\x0e\x03h\x1a\x02\x01-\x0f "}, + {"debug/dwarf", "\x03n\x0e\x03\x84\x013\x11\x01\x01"}, + {"debug/elf", "\x03\x06[\r\x0e\x03h\x1b\x01\f\"\x17\x01\x17"}, + {"debug/gosym", "\x03n\x11#\xa5\x01\x01\x01\x02"}, + {"debug/macho", "\x03\x06[\r\x11h\x1c.\x17\x01"}, + {"debug/pe", "\x03\x06[\r\x0e\x03h\x1c.\x17\x01\x17"}, + {"debug/plan9obj", "q\x0e\x03h\x1c."}, + {"embed", "\x7f*D\x19\x01V"}, {"embed/internal/embedtest", ""}, {"encoding", ""}, - {"encoding/ascii85", "\x85\x02E"}, - {"encoding/asn1", "\x03{\x03h(\x01)\r\x02\x01\x11\x03\x01"}, - {"encoding/base32", "\x85\x02C\x02"}, - {"encoding/base64", "\xa9\x01\\C\x02"}, - {"encoding/binary", "~\x87\x01\f*\r\x05"}, - {"encoding/csv", "\x02\x01{\x03\x84\x01F\x13\x02"}, - {"encoding/gob", "\x02i\x05\x0e\x03h\x1c\v\x01\x03\x1f\b\x12\x01\x10\x02"}, - {"encoding/hex", "~\x03\x84\x01C\x03"}, - {"encoding/json", "\x03\x01g\n\x01\x01\x02\x01\x01\x03\x03\x84\x016\x0f\x01"}, - {"encoding/json/internal", "~"}, - {"encoding/json/internal/jsonflags", "u"}, - {"encoding/json/internal/jsonopts", "u\x01"}, - {"encoding/json/internal/jsontest", "\x03f\x15\x03\x83\x01\x01\x012\b\b\x03\x02\x0f"}, - {"encoding/json/internal/jsonwire", "\x04r\b\x87\x01\f7\x02\x01\x13\x01\x01"}, - {"encoding/json/jsontext", "\x03r\x01\x01\x02\x05\x87\x01\x03\t\x034\x02\x01\x02\x13"}, - {"encoding/json/v2", "\x03\x01g\x03\x01\x01\x03\x02\x01\x01\x02\x01\x04\x03\x84\x01\f\x03'\r\x02\x01\x02\x0f\x02\x02"}, - {"encoding/pem", "\x03l\x0f\x87\x01C\x03"}, - {"encoding/xml", "\x02\x01h\x13\x03\x84\x016\x05\n\x01\x02\x11\x02"}, - {"errors", "\xdb\x01\x87\x01"}, - {"expvar", "tSB\b\v\x17\r\b\x02\x03\x01\x12"}, - {"flag", "k\x13\x03\x84\x01.\b\x05\b\x02\x01\x11"}, - {"fmt", "~E)\x19\f\"\b\r\x02\x03\x13"}, - {"go/ast", "\x03\x01}\x0e\x01u\x03+\b\r\x02\x01\x13\x02"}, - {"go/build", "\x02\x01{\x03\x01\x02\x02\a\x02\x01\x17 \x04\x02\t\x1c\x13\x01-\x01\x04\x01\a\b\x02\x01\x13\x02\x02"}, - {"go/build/constraint", "~\xcc\x01\x01\x13\x02"}, - {"go/constant", "\x81\x01\x0f\x81\x01\x01\x026\x01\x02\x13"}, - {"go/doc", "\x04}\x01\x05\t>73\x10\x02\x01\x13\x02"}, - {"go/doc/comment", "\x03~\xc7\x01\x01\x01\x01\x13\x02"}, - {"go/format", "\x03~\x01\v\x01\x02uF"}, - {"go/importer", "\x83\x01\a\x01\x01\x04\x01t;"}, - {"go/internal/gccgoimporter", "\x02\x01a\x1a\x03\x04\v\x01r\x02.\x01\x05\x11\x01\r\b"}, - {"go/internal/gcimporter", "\x02\x7f\x0f\x010\x140.\x15\x03\x02"}, - {"go/internal/srcimporter", "\x81\x01\x01\x01\n\x03\x01t.\x01\x05\x12\x02\x15"}, - {"go/parser", "\x03{\x03\x01\x02\v\x01u\x01-\x06\x12"}, - {"go/printer", "\x81\x01\x01\x02\x03\tu\f\"\x15\x02\x01\x02\f\x05\x02"}, - {"go/scanner", "\x03~\x0fu4\x10\x01\x14\x02"}, - {"go/token", "\x04}\x87\x01@\x02\x03\x01\x10\x02"}, - {"go/types", "\x03\x01\x06t\x03\x01\x03\b\x03\x02\x0654\x04\x03\t\"\x06\a\b\x01\x01\x01\x02\x01\x10\x02\x02"}, - {"go/version", "\xcc\x01\x7f"}, - {"hash", "\x85\x02"}, - {"hash/adler32", "~\x15\x16"}, - {"hash/crc32", "~\x15\x16\x15\x8f\x01\x01\x14"}, - {"hash/crc64", "~\x15\x16\xa4\x01"}, - {"hash/fnv", "~\x15\x16k"}, - {"hash/maphash", "\x93\x01\x11>\x80\x01"}, - {"html", "\xcb\x02\x02\x13"}, - {"html/template", "\x03q\r\x18.>\x01\n#\x05\x01\x02\x03\n\x02\x01\x02\r\x01\x03\x02"}, - {"image", "\x02|\x1ei\x0f6\x03\x01"}, + {"encoding/ascii85", "\x86\x02E"}, + {"encoding/asn1", "\x03|\x03h(\x01)\r\x02\x01\x11\x03\x01"}, + {"encoding/base32", "\x86\x02C\x02"}, + {"encoding/base64", "\xaa\x01\\C\x02"}, + {"encoding/binary", "\x7f\x87\x01\f*\r\x05"}, + {"encoding/csv", "\x02\x01|\x03\x84\x01F\x13\x02"}, + {"encoding/gob", "\x02j\x05\x0e\x03h\x1c\v\x01\x03\x1f\b\x12\x01\x10\x02"}, + {"encoding/hex", "\x7f\x03\x84\x01C\x03"}, + {"encoding/json", "\x03\x01h\n\x01\x01\x02\x01\x01\x03\x03\x84\x016\x0f\x01"}, + {"encoding/json/internal", "\x7f"}, + {"encoding/json/internal/jsonflags", "v"}, + {"encoding/json/internal/jsonopts", "v\x01"}, + {"encoding/json/internal/jsontest", "\x03g\x15\x03\x83\x01\x01\x012\b\b\x03\x02\x0f"}, + {"encoding/json/internal/jsonwire", "\x04s\b\x87\x01\f7\x02\x01\x13\x01\x01"}, + {"encoding/json/jsontext", "\x03s\x01\x01\x02\x05\x87\x01\x03\t\x034\x02\x01\x02\x13"}, + {"encoding/json/v2", "\x03\x01h\x03\x01\x01\x03\x02\x01\x01\x02\x01\x04\x03\x84\x01\f\x03'\r\x02\x01\x02\x0f\x02\x02"}, + {"encoding/pem", "\x03m\x0f\x87\x01C\x03"}, + {"encoding/xml", "\x02\x01i\x13\x03\x84\x016\x05\n\x01\x02\x11\x02"}, + {"errors", "\xdc\x01\x87\x01"}, + {"expvar", "uSB\b\v\x17\r\b\x02\x03\x01\x12"}, + {"flag", "l\x13\x03\x84\x01.\b\x05\b\x02\x01\x11"}, + {"fmt", "\x7fE)\x19\f\"\b\r\x02\x03\x13"}, + {"go/ast", "\x03\x01~\x0e\x01u\x03+\b\r\x02\x01\x13\x02"}, + {"go/build", "\x02\x01|\x03\x01\x02\x02\a\x02\x01\x17 \x04\x02\t\x1c\x13\x01-\x01\x04\x01\a\b\x02\x01\x13\x02\x02"}, + {"go/build/constraint", "\x7f\xcc\x01\x01\x13\x02"}, + {"go/constant", "\x82\x01\x0f\x81\x01\x01\x026\x01\x02\x13"}, + {"go/doc", "\x04~\x01\x05\t>73\x10\x02\x01\x13\x02"}, + {"go/doc/comment", "\x03\x7f\xc7\x01\x01\x01\x01\x13\x02"}, + {"go/format", "\x03\x7f\x01\v\x01\x02uF"}, + {"go/importer", "\x84\x01\a\x01\x01\x04\x01t;"}, + {"go/internal/gccgoimporter", "\x02\x01b\x1a\x03\x04\v\x01r\x02.\x01\x05\x11\x01\r\b"}, + {"go/internal/gcimporter", "\x02\x80\x01\x0f\x010\x140.\x15\x03\x02"}, + {"go/internal/srcimporter", "\x82\x01\x01\x01\n\x03\x01t.\x01\x05\x12\x02\x15"}, + {"go/parser", "\x03|\x03\x01\x02\v\x01u\x01-\x06\x12"}, + {"go/printer", "\x82\x01\x01\x02\x03\tu\f\"\x15\x02\x01\x02\f\x05\x02"}, + {"go/scanner", "\x03\x7f\x0fu4\x10\x01\x14\x02"}, + {"go/token", "\x04~\x87\x01@\x02\x03\x01\x10\x02"}, + {"go/types", "\x03\x01\x06u\x03\x01\x03\b\x03\x02\x0654\x04\x03\t\"\x06\a\b\x01\x01\x01\x02\x01\x10\x02\x02"}, + {"go/version", "\xcd\x01\x7f"}, + {"hash", "\x86\x02"}, + {"hash/adler32", "\x7f\x15\x16"}, + {"hash/crc32", "\x7f\x15\x16\x15\x8f\x01\x01\x14"}, + {"hash/crc64", "\x7f\x15\x16\xa4\x01"}, + {"hash/fnv", "\x7f\x15\x16k"}, + {"hash/maphash", "\x94\x01\x11>\x80\x01"}, + {"html", "\xcc\x02\x02\x13"}, + {"html/template", "\x03r\r\x18.>\x01\n#\x05\x01\x02\x03\n\x02\x01\x02\r\x01\x03\x02"}, + {"image", "\x02}\x1ei\x0f6\x03\x01"}, {"image/color", ""}, - {"image/color/palette", "\x9c\x01"}, - {"image/draw", "\x9b\x01\x01\x04"}, - {"image/gif", "\x02\x01\x05v\x03\x1a\x01\x01\x01\v\\\x0f"}, - {"image/internal/imageutil", "\x9b\x01"}, - {"image/jpeg", "\x02|\x1d\x01\x04e"}, - {"image/png", "\x02\ag\x11\x12\x02\x06\x01iE"}, - {"index/suffixarray", "\x03m\x0e\x87\x01\f-\n\x01"}, - {"internal/abi", "\xc6\x01\x9c\x01"}, - {"internal/asan", "\xe2\x02"}, - {"internal/bisect", "\xc0\x02\r\x01"}, - {"internal/buildcfg", "\x81\x01Hj\x06\x02\x05\n\x01"}, - {"internal/bytealg", "\xbe\x01\xa4\x01"}, + {"image/color/palette", "\x9d\x01"}, + {"image/draw", "\x9c\x01\x01\x04"}, + {"image/gif", "\x02\x01\x05w\x03\x1a\x01\x01\x01\v\\\x0f"}, + {"image/internal/imageutil", "\x9c\x01"}, + {"image/jpeg", "\x02}\x1d\x01\x04e"}, + {"image/png", "\x02\ah\x11\x12\x02\x06\x01iE"}, + {"index/suffixarray", "\x03n\x0e\x87\x01\f-\n\x01"}, + {"internal/abi", "\xc7\x01\x9c\x01"}, + {"internal/asan", "\xe3\x02"}, + {"internal/bisect", "\xc1\x02\r\x01"}, + {"internal/buildcfg", "\x82\x01Hj\x06\x02\x05\n\x01"}, + {"internal/bytealg", "\xbf\x01\xa4\x01"}, {"internal/byteorder", ""}, {"internal/cfg", ""}, - {"internal/cgrouptest", "\x81\x01\\V\x06\x0f\x02\x01\x04\x01"}, - {"internal/chacha8rand", "\xa9\x01\x15\b\x9c\x01"}, + {"internal/cgrouptest", "\x82\x01\\V\x06\x0f\x02\x01\x04\x01"}, + {"internal/chacha8rand", "\xaa\x01\x15\b\x9c\x01"}, {"internal/copyright", ""}, {"internal/coverage", ""}, {"internal/coverage/calloc", ""}, - {"internal/coverage/cfile", "t\r\x16\x17\x01\x02\x01\x01\x01\x01\x01\x01\x01$\x02'.\x06\a\n\x01\x03\x0e\x06"}, - {"internal/coverage/cformat", "\x04}-\x04S\v8\x01\x02\x0e"}, - {"internal/coverage/cmerge", "\x81\x01-c"}, - {"internal/coverage/decodecounter", "p\x11-\v\x02J.\x17\x18"}, - {"internal/coverage/decodemeta", "\x02n\x11\x16\x17\v\x02J."}, - {"internal/coverage/encodecounter", "\x02n\x11-\f\x01\x02H\v#\x15"}, - {"internal/coverage/encodemeta", "\x02\x01m\x11\x12\x04\x17\r\x02H./"}, - {"internal/coverage/pods", "\x04}-\x85\x01\x06\x05\n\x02\x01"}, - {"internal/coverage/rtcov", "\xe2\x02"}, - {"internal/coverage/slicereader", "p\x11\x84\x01]"}, - {"internal/coverage/slicewriter", "\x81\x01\x84\x01"}, - {"internal/coverage/stringtab", "\x81\x018\x04H"}, + {"internal/coverage/cfile", "u\r\x16\x17\x01\x02\x01\x01\x01\x01\x01\x01\x01$\x02'.\x06\a\n\x01\x03\x0e\x06"}, + {"internal/coverage/cformat", "\x04~-\x04S\v8\x01\x02\x0e"}, + {"internal/coverage/cmerge", "\x82\x01-c"}, + {"internal/coverage/decodecounter", "q\x11-\v\x02J.\x17\x18"}, + {"internal/coverage/decodemeta", "\x02o\x11\x16\x17\v\x02J."}, + {"internal/coverage/encodecounter", "\x02o\x11-\f\x01\x02H\v#\x15"}, + {"internal/coverage/encodemeta", "\x02\x01n\x11\x12\x04\x17\r\x02H./"}, + {"internal/coverage/pods", "\x04~-\x85\x01\x06\x05\n\x02\x01"}, + {"internal/coverage/rtcov", "\xe3\x02"}, + {"internal/coverage/slicereader", "q\x11\x84\x01]"}, + {"internal/coverage/slicewriter", "\x82\x01\x84\x01"}, + {"internal/coverage/stringtab", "\x82\x018\x04H"}, {"internal/coverage/test", ""}, {"internal/coverage/uleb128", ""}, - {"internal/cpu", "\xe2\x02"}, - {"internal/dag", "\x04}\xc7\x01\x03"}, - {"internal/diff", "\x03~\xc8\x01\x02"}, - {"internal/exportdata", "\x02\x01{\x03\x02f\x1c.\x01\x05\x11\x01\x02"}, - {"internal/filepathlite", "~*D\x1aB"}, - {"internal/fmtsort", "\x04\xb7\x02\r"}, - {"internal/fuzz", "\x03\nJ\x19\x04\n\x03\x01\v\x037>\f\x03\x1f\x01\x05\x02\x05\n\x01\x02\x01\x01\r\x04\x02"}, + {"internal/cpu", "\xe3\x02"}, + {"internal/dag", "\x04~\xc7\x01\x03"}, + {"internal/diff", "\x03\x7f\xc8\x01\x02"}, + {"internal/exportdata", "\x02\x01|\x03\x02f\x1c.\x01\x05\x11\x01\x02"}, + {"internal/filepathlite", "\x7f*D\x1aB"}, + {"internal/fmtsort", "\x04\xb8\x02\r"}, + {"internal/fuzz", "\x03\nK\x19\x04\n\x03\x01\v\x037>\f\x03\x1f\x01\x05\x02\x05\n\x01\x02\x01\x01\r\x04\x02"}, {"internal/gate", "\r"}, {"internal/goarch", ""}, - {"internal/godebug", "\xa6\x01\"\x85\x01\x01\x14"}, + {"internal/godebug", "\xa7\x01\"\x85\x01\x01\x14"}, {"internal/godebugs", ""}, {"internal/goexperiment", ""}, {"internal/goos", ""}, - {"internal/goroot", "\xb3\x02\x01\x05\x12\x02"}, + {"internal/goroot", "\xb4\x02\x01\x05\x12\x02"}, {"internal/gover", "\x04"}, {"internal/goversion", ""}, - {"internal/lazyregexp", "\xb3\x02\v\r\x02"}, - {"internal/lazytemplate", "\x85\x02.\x18\x02\r"}, - {"internal/msan", "\xe2\x02"}, - {"internal/nettest", "\x03\nqG@\f\n\x12\x06\x15\x05\x0f"}, + {"internal/lazyregexp", "\xb4\x02\v\r\x02"}, + {"internal/lazytemplate", "\x86\x02.\x18\x02\r"}, + {"internal/msan", "\xe3\x02"}, + {"internal/nettest", "\x03\nrG@\f\n\x12\x06\x15\x05\x0f"}, {"internal/nettrace", ""}, - {"internal/obscuretestdata", "o\x96\x01."}, - {"internal/oserror", "~"}, - {"internal/pkgbits", "\x03T\x19\x0e\x03\x04\vu\r!\r\n\x01"}, + {"internal/obscuretestdata", "p\x96\x01."}, + {"internal/oserror", "\x7f"}, + {"internal/pkgbits", "\x03U\x19\x0e\x03\x04\vu\r!\r\n\x01"}, {"internal/platform", ""}, - {"internal/poll", "~m\x05\x15;\r\x01\x01\r\x06"}, - {"internal/profile", "\x03\x04w\x03\x84\x019\n\x01\x01\x01\x11"}, + {"internal/poll", "\x7fm\x05\x15;\r\x01\x01\r\x06"}, + {"internal/profile", "\x03\x04x\x03\x84\x019\n\x01\x01\x01\x11"}, {"internal/profilerecord", ""}, - {"internal/race", "\xa4\x01\xbe\x01"}, - {"internal/reflectlite", "\xa4\x01\"<>\""}, - {"internal/runtime/atomic", "\xc6\x01\x9c\x01"}, - {"internal/runtime/cgroup", "\xa8\x01?\x04w"}, - {"internal/runtime/exithook", "\xdc\x01\x86\x01"}, - {"internal/runtime/gc", "\xc6\x01"}, - {"internal/runtime/gc/internal/gen", "\nf\x11\x17m\x04\v\x1f\b\x10\x02"}, - {"internal/runtime/gc/scan", "\xbe\x01\b\x19\a|"}, - {"internal/runtime/maps", "\xa4\x01\x01\x04\x15\b\x03\a\n\t\x03.N"}, - {"internal/runtime/math", "\xc6\x01"}, + {"internal/race", "\xa5\x01\xbe\x01"}, + {"internal/reflectlite", "\xa5\x01\"<>\""}, + {"internal/runtime/atomic", "\xc7\x01\x9c\x01"}, + {"internal/runtime/cgroup", "\xa9\x01?\x04w"}, + {"internal/runtime/exithook", "\xdd\x01\x86\x01"}, + {"internal/runtime/gc", "\xc7\x01"}, + {"internal/runtime/gc/internal/gen", "\ng\x11\x17m\x04\v\x1f\b\x10\x02"}, + {"internal/runtime/gc/scan", "\xbf\x01\b\x19\a|"}, + {"internal/runtime/maps", "\xa5\x01\x01\x04\x15\b\x03\a\n\t\x03.N"}, + {"internal/runtime/math", "\xc7\x01"}, {"internal/runtime/pprof/label", ""}, {"internal/runtime/startlinetest", ""}, - {"internal/runtime/sys", "\xc6\x01\x04"}, - {"internal/runtime/syscall/linux", "\xc6\x01\x9c\x01"}, + {"internal/runtime/sys", "\xc7\x01\x04"}, + {"internal/runtime/syscall/linux", "\xc7\x01\x9c\x01"}, {"internal/runtime/wasitest", ""}, - {"internal/saferio", "\x85\x02]"}, - {"internal/singleflight", "\xcd\x02"}, - {"internal/strconv", "\x94\x02N"}, - {"internal/stringslite", "\xa8\x01\xba\x01"}, - {"internal/sync", "\xa4\x01\"\x14t\x14"}, - {"internal/synctest", "\xa4\x01\xbe\x01"}, - {"internal/syscall/execenv", "\xcf\x02"}, - {"internal/syscall/unix", "\xeb\x01U\x0e\x01\x13"}, - {"internal/sysinfo", "\x02\x01\xbb\x01G.\x18\x02"}, + {"internal/saferio", "\x86\x02]"}, + {"internal/singleflight", "\xce\x02"}, + {"internal/strconv", "\x95\x02N"}, + {"internal/stringslite", "\xa9\x01\xba\x01"}, + {"internal/sync", "\xa5\x01\"\x14t\x14"}, + {"internal/synctest", "\xa5\x01\xbe\x01"}, + {"internal/syscall/execenv", "\xd0\x02"}, + {"internal/syscall/unix", "\xec\x01U\x0e\x01\x13"}, + {"internal/sysinfo", "\x02\x01\xbc\x01G.\x18\x02"}, {"internal/syslist", ""}, - {"internal/testenv", "\x03\nq\x02\x01)\x1c\x100-\x01\x05\a\n\x01\x02\x02\x01\f"}, - {"internal/testhash", "\x03\x90\x01r\x11:\f"}, - {"internal/testlog", "\xcd\x02\x01\x14"}, - {"internal/testpty", "~\x03\xb2\x01"}, - {"internal/trace", "\x02\x01\x01\x06f\x0e\x03x\x03\x03\x06\x03\t-\n\x01\x01\x01\x11\x06"}, - {"internal/trace/internal/testgen", "\x03m\x11v\x03\x02\x03\x013\v\r\x11"}, - {"internal/trace/internal/tracev1", "\x03\x01l\x0e\x03~\x06\f7\x01"}, - {"internal/trace/raw", "\x02n\x11{\x03\x06E\x01\x13"}, - {"internal/trace/testtrace", "\x02\x01{\x03r\x04\x03\x05\x01\x05.\v\x02\b\x02\x01\x05"}, + {"internal/testenv", "\x03\nr\x02\x01)\x1c\x100-\x01\x05\a\n\x01\x02\x02\x01\f"}, + {"internal/testhash", "\x03\x91\x01r\x11:\f"}, + {"internal/testlog", "\xce\x02\x01\x14"}, + {"internal/testpty", "\x7f\x03\xb2\x01"}, + {"internal/trace", "\x02\x01\x01\x06g\x0e\x03x\x03\x03\x06\x03\t-\n\x01\x01\x01\x11\x06"}, + {"internal/trace/internal/testgen", "\x03n\x11v\x03\x02\x03\x013\v\r\x11"}, + {"internal/trace/internal/tracev1", "\x03\x01m\x0e\x03~\x06\f7\x01"}, + {"internal/trace/raw", "\x02o\x11{\x03\x06E\x01\x13"}, + {"internal/trace/testtrace", "\x02\x01|\x03r\x04\x03\x05\x01\x05.\v\x02\b\x02\x01\x05"}, {"internal/trace/tracev2", ""}, - {"internal/trace/traceviewer", "\x02g\v\r\x19>\x1f\a\a\x04\b\v\x17\x01\x05\a\n\x01\x02\x0f"}, + {"internal/trace/traceviewer", "\x02h\v\r\x19>\x1f\a\a\x04\b\v\x17\x01\x05\a\n\x01\x02\x0f"}, {"internal/trace/traceviewer/format", ""}, - {"internal/trace/version", "\x81\x01{\t"}, - {"internal/txtar", "\x03~\xb2\x01\x18"}, - {"internal/types/errors", "\xca\x02"}, - {"internal/unsafeheader", "\xe2\x02"}, - {"internal/xcoff", "c\r\x0e\x03h\x1c.\x17\x01"}, - {"internal/zstd", "p\x0e\x03\x84\x01\x0f"}, - {"io", "~\xcf\x01"}, - {"io/fs", "~*,13\x10\x14\x04"}, - {"io/ioutil", "\x85\x02\x01-\x15\x03"}, - {"iter", "\xda\x01f\""}, - {"log", "\x81\x01\x84\x01\x05)\r\r\x01\x0e"}, + {"internal/trace/version", "\x82\x01{\t"}, + {"internal/txtar", "\x03\x7f\xb2\x01\x18"}, + {"internal/types/errors", "\xcb\x02"}, + {"internal/unsafeheader", "\xe3\x02"}, + {"internal/xcoff", "d\r\x0e\x03h\x1c.\x17\x01"}, + {"internal/zstd", "q\x0e\x03\x84\x01\x0f"}, + {"io", "\x7f\xcf\x01"}, + {"io/fs", "\x7f*,13\x10\x14\x04"}, + {"io/ioutil", "\x86\x02\x01-\x15\x03"}, + {"iter", "\xdb\x01f\""}, + {"log", "\x82\x01\x84\x01\x05)\r\r\x01\x0e"}, {"log/internal", ""}, - {"log/slog", "\x03\n^\t\n\x03H<\x04\x01\x02\x02\x03*\x05\b\x02\x01\x02\x01\x0e\x02\x02\x02"}, + {"log/slog", "\x03\n_\t\n\x03H<\x04\x01\x02\x02\x03*\x05\b\x02\x01\x02\x01\x0e\x02\x02\x02"}, {"log/slog/internal", ""}, - {"log/slog/internal/benchmarks", "\rq\x03\x84\x01\x06\x03<\x12"}, - {"log/slog/internal/buffer", "\xcd\x02"}, - {"log/syslog", "~\x03\x88\x01\x12\x18\x18\x02\x0f"}, - {"maps", "\x88\x02Z"}, - {"math", "\xbe\x01VN"}, - {"math/big", "\x03{\x03(\x15G\f\x03\x022\x02\x01\x02\x15"}, - {"math/big/internal/asmgen", "\x03\x01}\x93\x014\x03"}, - {"math/bits", "\xe2\x02"}, - {"math/cmplx", "\x91\x02\x03"}, - {"math/rand", "\xc7\x01J<\x01\x14"}, - {"math/rand/v2", "~+\x03e\x03N"}, - {"mime", "\x02\x01l\x0f\x03\x84\x01\v#\x15\x03\x02\x11\x02"}, - {"mime/multipart", "\x02\x01P+\x03F>\v\x01\a\x02\x17\x02\x06\x0f\x02\x01\x17"}, - {"mime/quotedprintable", "\x02\x01~\x84\x01"}, - {"net", "\x04\tq*\x1f\v\x05\x13\x01\x01\x04\x15\x01'\x06\r\b\x05\x01\x01\r\x06\t"}, - {"net/http", "\x02\x01\x03\x01\x04\x02N\x14\x0f\x03F>\x01\x03\a\x01\x06\x01\x01\x02\x06\x02\x01\x01\f\x01\x01\x05\x01\x02\x05\b\x01\x01\x01\x02\x01\x0e\x02\x02\x02\n\x01\x03"}, - {"net/http/cgi", "\x02Y#\x03\x84\x01\x04\a\v\x01\x15\x01\x01\x01\x04\x01\x05\x02\b\x02\x01\x11\x10"}, - {"net/http/cookiejar", "\x04z\x03\x9a\x01\x01\b\t\x05\x16\x03\x02\x0f\x04"}, - {"net/http/fcgi", "\x02\x01\nc\x0e\x03\x84\x01\x16\x01\x01\x16\x18\x02\x0f"}, - {"net/http/httptest", "\x02\x01\nN\x02#\x01P4\x04\x12\x01\f\t\x02\r\n\x01\x02\x03\f\x06\n"}, - {"net/http/httptrace", "\rNwI\x16+"}, - {"net/http/httputil", "\x02\x01\nq\x03F>\x04\x0f\x03\x01\x05\x02\x01\r\x01\x19\x02\x01\x0e\x10"}, - {"net/http/internal", "\x02\x01m\x0e\x03\x84\x01"}, - {"net/http/internal/ascii", "\xcb\x02\x13"}, - {"net/http/internal/http2", "\x02\x01\x03\x01\x06F\b\x15\x0e\x03\x84\x01\x01\x03\b\x03\x02\x03\x02\x06\x02\x03\x01\n\x01\x01\b\x05\b\x02\x01\x02\x01\x0e\x10\x02\x02"}, - {"net/http/internal/httpcommon", "\rq\x03\xa0\x01\x10\x01\x17\x01\x01\x02\x1f\x02"}, - {"net/http/internal/httpsfv", "\xc8\x02\x02\x01\x11\x04"}, - {"net/http/internal/testcert", "\xcb\x02"}, - {"net/http/pprof", "\x02\x01\nt\x18.\x11-\x04\x13\x16\x01\r\x04\x03\x01\x02\x01\x11"}, + {"log/slog/internal/benchmarks", "\rr\x03\x84\x01\x06\x03<\x12"}, + {"log/slog/internal/buffer", "\xce\x02"}, + {"log/syslog", "\x7f\x03\x88\x01\x12\x18\x18\x02\x0f"}, + {"maps", "\x89\x02Z"}, + {"math", "\xbf\x01VN"}, + {"math/big", "\x03|\x03(\x15G\f\x03\x022\x02\x01\x02\x15"}, + {"math/big/internal/asmgen", "\x03\x01~\x93\x014\x03"}, + {"math/bits", "\xe3\x02"}, + {"math/cmplx", "\x92\x02\x03"}, + {"math/rand", "\xc8\x01J<\x01\x14"}, + {"math/rand/v2", "\x7f+\x03e\x03N"}, + {"mime", "\x02\x01m\x0f\x03\x84\x01\v#\x15\x03\x02\x11\x02"}, + {"mime/multipart", "\x02\x01Q+\x03F>\v\x01\a\x02\x17\x02\x06\x0f\x02\x01\x17"}, + {"mime/quotedprintable", "\x02\x01\x7f\x84\x01"}, + {"net", "\x04\tr*\x1f\v\x05\x13\x01\x01\x04\x15\x01'\x06\r\b\x05\x01\x01\r\x06\t"}, + {"net/http", "\x02\x01\x03\x01\x04\x02O\x14\x0f\x03F>\x01\x03\a\x01\x06\x01\x01\x02\x06\x02\x01\x01\f\x01\x01\x05\x01\x02\x05\b\x01\x01\x01\x02\x01\x0e\x02\x02\x02\n\x01\x03"}, + {"net/http/cgi", "\x02Z#\x03\x84\x01\x04\a\v\x01\x15\x01\x01\x01\x04\x01\x05\x02\b\x02\x01\x11\x10"}, + {"net/http/cookiejar", "\x04{\x03\x9a\x01\x01\b\t\x05\x16\x03\x02\x0f\x04"}, + {"net/http/fcgi", "\x02\x01\nd\x0e\x03\x84\x01\x16\x01\x01\x16\x18\x02\x0f"}, + {"net/http/httptest", "\x02\x01\nO\x02#\x01P4\x04\x12\x01\f\t\x02\r\n\x01\x02\x03\f\x06\n"}, + {"net/http/httptrace", "\rOwI\x16+"}, + {"net/http/httputil", "\x02\x01\nr\x03F>\x04\x0f\x03\x01\x05\x02\x01\r\x01\x19\x02\x0f\x10"}, + {"net/http/internal", "\x02\x01n\x0e\x03\x84\x01"}, + {"net/http/internal/ascii", "\xcc\x02\x13"}, + {"net/http/internal/http2", "\x02\x01\x03\x01\x06G\b\x15\x0e\x03\x84\x01\x01\x03\b\x03\x02\x03\x02\x06\x02\x03\x01\n\x01\x01\b\x05\b\x02\x01\x02\x01\x0e\x10\x02\x02"}, + {"net/http/internal/httpcommon", "\rr\x03\xa0\x01\x10\x01\x17\x01\x01\x02\x1f\x02"}, + {"net/http/internal/httpsfv", "\xc9\x02\x02\x01\x11\x04"}, + {"net/http/internal/testcert", "\xcc\x02"}, + {"net/http/pprof", "\x02\x01\nu\x18.\x11-\x04\x13\x16\x01\r\x04\x03\x01\x02\x01\x11"}, {"net/internal/cgotest", ""}, - {"net/internal/socktest", "\x81\x01\xcc\x01\x02"}, - {"net/mail", "\x02|\x03\x84\x01\x04\x0f\x03\x16\x1a\x02\x0f\x04"}, - {"net/netip", "\x04z*\x01h\x036\x17"}, - {"net/rpc", "\x02p\f\x03\x0f\nk\x04\x12\x01\x1f\r\x03\x02"}, - {"net/rpc/jsonrpc", "t\n\x03\x84\x01\x16\x13\x1f"}, - {"net/smtp", "\x195\r\x14\x0f\x03\x84\x01\x16\x16\x1a"}, - {"net/textproto", "\x02\x01{\x03\x84\x01\f\n/\x01\x02\x15"}, - {"net/url", "~\x03Ff\v\x10\x02\x01\x17"}, - {"os", "~*\x01\x19\x04\x11\x14\x01\x03\x01\x05\x10\x01:\b\x05\x01\x01\r\x06"}, - {"os/exec", "\x03\nqI(\x01\x15\x01-\x06\a\n\x01\x03\x01\r"}, - {"os/exec/internal/fdtest", "\xcf\x02"}, - {"os/signal", "\r\xa6\x02\x15\x05\x02"}, - {"os/user", "\x02\x01{\x03\x84\x01.\r\n\x01\x02"}, - {"path", "~*\xb8\x01"}, - {"path/filepath", "~*\x1aD-\r\b\x03\x04\x11"}, - {"plugin", "~"}, - {"reflect", "~&\x04\x1e\x03\x11\b\x04\x05\x17\x06\t/\n\x03\x11\x02\x02"}, + {"net/internal/socktest", "\x82\x01\xcc\x01\x02"}, + {"net/mail", "\x02}\x03\x84\x01\x04\x0f\x03\x16\x1a\x02\x0f\x04"}, + {"net/netip", "\x04{*\x01h\x036\x17"}, + {"net/rpc", "\x02q\f\x03\x0f\nk\x04\x12\x01\x1f\r\x03\x02"}, + {"net/rpc/jsonrpc", "u\n\x03\x84\x01\x16\x13\x1f"}, + {"net/smtp", "\x196\r\x14\x0f\x03\x84\x01\x16\x16\x1a"}, + {"net/textproto", "\x02\x01|\x03\x84\x01\f\n/\x01\x02\x15"}, + {"net/url", "\x7f\x03Ff\v\x10\x02\x01\x17"}, + {"os", "\x7f*\x01\x19\x04\x11\x14\x01\x03\x01\x05\x10\x01:\b\x05\x01\x01\r\x06"}, + {"os/exec", "\x03\nrI(\x01\x15\x01-\x06\a\n\x01\x03\x01\r"}, + {"os/exec/internal/fdtest", "\xd0\x02"}, + {"os/signal", "\r\xa7\x02\x15\x05\x02"}, + {"os/user", "\x02\x01|\x03\x84\x01.\r\n\x01\x02"}, + {"path", "\x7f*\xb8\x01"}, + {"path/filepath", "\x7f*\x1aD-\r\b\x03\x04\x11"}, + {"plugin", "\x7f"}, + {"reflect", "\x7f&\x04\x1e\x03\x11\b\x04\x05\x17\x06\t/\n\x03\x11\x02\x02"}, {"reflect/internal/example1", ""}, {"reflect/internal/example2", ""}, - {"regexp", "\x03\x82\x02\x037\t\x02\x01\x02\x11\x02"}, - {"regexp/syntax", "\xc8\x02\x01\x01\x01\x02\x11\x02"}, - {"runtime", "\xa4\x01\x04\x01\x03\f\x06\b\x02\x01\x01\x0f\x03\x01\x01\x01\x02\x01\x01\x01\x02\x01\x04\x01\x10\x18N"}, - {"runtime/coverage", "\xb0\x01U"}, - {"runtime/debug", "\x81\x01V\\\r\b\x02\x01\x11\x06"}, - {"runtime/metrics", "\xc8\x01I/\""}, - {"runtime/pprof", "\x02\x01\x01\x03\x06c\x0e\x03#5\v!\f\"\r\b\x01\x01\x01\x02\x02\n\x03\x06"}, - {"runtime/race", "\xc6\x02"}, + {"regexp", "\x03\x83\x02\x037\t\x02\x01\x02\x11\x02"}, + {"regexp/syntax", "\xc9\x02\x01\x01\x01\x02\x11\x02"}, + {"runtime", "\xa5\x01\x04\x01\x03\f\x06\b\x02\x01\x01\x0f\x03\x01\x01\x01\x02\x01\x01\x01\x02\x01\x04\x01\x10\x18N"}, + {"runtime/coverage", "\xb1\x01U"}, + {"runtime/debug", "\x82\x01V\\\r\b\x02\x01\x11\x06"}, + {"runtime/metrics", "\xc9\x01I/\""}, + {"runtime/pprof", "\x02\x01\x01\x03\x06d\x0e\x03#5\v!\f\"\r\b\x01\x01\x01\x02\x02\n\x03\x06"}, + {"runtime/race", "\xc7\x02"}, {"runtime/race/internal/amd64v1", ""}, - {"runtime/trace", "\rq\x03{\t;\b\x05\x01\x0e\x06"}, - {"slices", "\x04\x84\x02\fN"}, - {"sort", "\xdb\x0194"}, - {"strconv", "~*C\x01t"}, - {"strings", "~&\x04D\x19\x03\f9\x11\x02\x02"}, + {"runtime/trace", "\rr\x03{\t;\b\x05\x01\x0e\x06"}, + {"slices", "\x04\x85\x02\fN"}, + {"sort", "\xdc\x0194"}, + {"strconv", "\x7f*C\x01t"}, + {"strings", "\x7f&\x04D\x19\x03\f9\x11\x02\x02"}, {"structs", ""}, - {"sync", "\xda\x01\x02\x11\x01R\x0e\x14"}, - {"sync/atomic", "\xe2\x02"}, - {"syscall", "~'\x03\x01\x1d\n\x04\x06\r\x04U\b\x05\x01\x14"}, - {"testing", "\x03\nq\x02\x01Y\x17\x14\f\x05\x1d\x06\x02\x05\x02\x05\x01\x02\x01\x02\x01\x0e\x02\x04"}, - {"testing/cryptotest", "SV\\\x126\x03\x12"}, - {"testing/fstest", "~\x03\x84\x01\x01\n(\x10\x03\t\b"}, - {"testing/internal/testdeps", "\x02\v\xb7\x011\x10.\x03\x05\x03\x06\a\x02\x0f"}, - {"testing/iotest", "\x03{\x03\x84\x01\x04"}, - {"testing/quick", "\x80\x01\x01\x90\x01\x05%\x10\x11"}, - {"testing/slogtest", "\rq\x03\x8a\x010\x05\x10\f"}, - {"testing/synctest", "\xee\x01b\f\x06"}, - {"text/scanner", "\x03~\x84\x01.+\x02"}, - {"text/tabwriter", "\x81\x01\x84\x01["}, - {"text/template", "~\x03BB\x01\n\"\x01\x05\x01\x02\x05\v\x02\x0e\x03\x02"}, - {"text/template/parse", "\x03~\xbf\x01\n\x01\x13\x02"}, - {"time", "~*D(,\r\x02\x13"}, - {"time/tzdata", "~\xd1\x01\x13"}, + {"sync", "\xdb\x01\x02\x11\x01R\x0e\x14"}, + {"sync/atomic", "\xe3\x02"}, + {"syscall", "\x7f'\x03\x01\x1d\n\x04\x06\r\x04U\b\x05\x01\x14"}, + {"testing", "\x03\nr\x02\x01Y\x17\x14\f\x05\x1d\x06\x02\x05\x02\x05\x01\x02\x01\x02\x01\x0e\x02\x04"}, + {"testing/cryptotest", "TV\\\x126\x03\x12"}, + {"testing/fstest", "\x7f\x03\x84\x01\x01\n(\x10\x03\t\b"}, + {"testing/internal/testdeps", "\x02\v\xb8\x011\x10.\x03\x05\x03\x06\a\x02\x0f"}, + {"testing/iotest", "\x03|\x03\x84\x01\x04"}, + {"testing/quick", "\x81\x01\x01\x90\x01\x05%\x10\x11"}, + {"testing/slogtest", "\rr\x03\x8a\x010\x05\x10\f"}, + {"testing/synctest", "\xef\x01b\f\x06"}, + {"text/scanner", "\x03\x7f\x84\x01.+\x02"}, + {"text/tabwriter", "\x82\x01\x84\x01["}, + {"text/template", "\x7f\x03BB\x01\n\"\x01\x05\x01\x02\x05\v\x02\x0e\x03\x02"}, + {"text/template/parse", "\x03\x7f\xbf\x01\n\x01\x13\x02"}, + {"time", "\x7f*D(,\r\x02\x13"}, + {"time/tzdata", "\x7f\xd1\x01\x13"}, {"unicode", ""}, {"unicode/utf16", ""}, {"unicode/utf8", ""}, - {"unique", "\xa4\x01\"&\x01S\r\x01\x14\x19"}, + {"unique", "\xa5\x01\"&\x01S\r\x01\x14\x19"}, {"unsafe", ""}, - {"uuid", "\x03\x01O\x1d\x03\v\xcf\x01\x0f"}, - {"vendor/golang.org/x/crypto/chacha20", "\x10`\x0e\x96\x01,)"}, - {"vendor/golang.org/x/crypto/chacha20poly1305", "\x10\aY\x0e\xe6\x01\x05\x01\f"}, - {"vendor/golang.org/x/crypto/cryptobyte", "m\x11\x03\x91\x01)!\v"}, + {"uuid", "\x03\x01P\x1d\x03\v\xcf\x01\x0f"}, + {"vendor/golang.org/x/crypto/chacha20", "\x10a\x0e\x96\x01,)"}, + {"vendor/golang.org/x/crypto/chacha20poly1305", "\x10\aZ\x0e\xe6\x01\x05\x01\f"}, + {"vendor/golang.org/x/crypto/cryptobyte", "n\x11\x03\x91\x01)!\v"}, {"vendor/golang.org/x/crypto/cryptobyte/asn1", ""}, - {"vendor/golang.org/x/crypto/hkdf", "\x18\x01e\x15r"}, - {"vendor/golang.org/x/crypto/internal/alias", "\xe2\x02"}, - {"vendor/golang.org/x/crypto/internal/poly1305", "Z\x16\xa4\x01"}, - {"vendor/golang.org/x/net/dns/dnsmessage", "~\xca\x01"}, - {"vendor/golang.org/x/net/http/httpguts", "\x9b\x02\x16\x1a\x15\x10"}, - {"vendor/golang.org/x/net/http/httpproxy", "~\x03\x9a\x01\x12\x05\x01\x18\x15\x10"}, - {"vendor/golang.org/x/net/http2/hpack", "\x03{\x03\x84\x01H"}, - {"vendor/golang.org/x/net/http3", "\x9c\x02@\x06\x0f\x04"}, - {"vendor/golang.org/x/net/idna", "\x81\x01\x90\x01:\x13\x02\x17\x02\x01"}, - {"vendor/golang.org/x/net/internal/http3", "\rN#\x03\x84\x01\v\x04\a\x01\x05\x10\x01\x16\x02\x01\x02\x0f\x10\x02\x04\x03"}, - {"vendor/golang.org/x/net/internal/httpcommon", "\rq\x03\xa0\x01\x10\x01\x17\x01\x01\x02\x1f\x02"}, - {"vendor/golang.org/x/net/internal/quic/quicwire", "p"}, - {"vendor/golang.org/x/net/nettest", "\x03m\x0e\x03\x84\x01\x11\x05\x18\x01\f\n\x01\x02\x02\x01\f"}, - {"vendor/golang.org/x/net/quic", "\x03\n\x01\x01\x01\t:\x04\x04\x15\x03\v\x03\x12r\x06\x06\x06\x04\x12\x06\x15\x02\x01\x02\x01\x01\r\x06\x02\x01\x01\x02\v"}, - {"vendor/golang.org/x/sys/cpu", "\xb3\x02\r\n\x01\x17"}, - {"vendor/golang.org/x/text/secure/bidirule", "~\xe2\x01\x18\x01"}, - {"vendor/golang.org/x/text/transform", "\x03{\x87\x01["}, - {"vendor/golang.org/x/text/unicode/bidi", "\x03\bv\x88\x01@\x17"}, - {"vendor/golang.org/x/text/unicode/norm", "p\x11\x84\x01H\x13\x18"}, - {"weak", "\xa4\x01\x9c\x01\""}, + {"vendor/golang.org/x/crypto/hkdf", "\x18\x01f\x15r"}, + {"vendor/golang.org/x/crypto/internal/alias", "\xe3\x02"}, + {"vendor/golang.org/x/crypto/internal/poly1305", "[\x16\xa4\x01"}, + {"vendor/golang.org/x/net/dns/dnsmessage", "\x7f\xca\x01"}, + {"vendor/golang.org/x/net/http/httpguts", "\x9c\x02\x16\x1a\x15\x10"}, + {"vendor/golang.org/x/net/http/httpproxy", "\x7f\x03\x9a\x01\x12\x05\x01\x18\x15\x10"}, + {"vendor/golang.org/x/net/http2/hpack", "\x03|\x03\x84\x01H"}, + {"vendor/golang.org/x/net/http3", "\x9d\x02@\x06\x0f\x04"}, + {"vendor/golang.org/x/net/idna", "\x82\x01\x90\x01:\x13\x02\x17\x02\x01"}, + {"vendor/golang.org/x/net/internal/http3", "\rO#\x03\x84\x01\v\x04\a\x01\x05\x10\x01\x16\x02\x01\x02\x0f\x10\x02\x04\x03"}, + {"vendor/golang.org/x/net/internal/httpcommon", "\rr\x03\xa0\x01\x10\x01\x17\x01\x01\x02\x1f\x02"}, + {"vendor/golang.org/x/net/internal/quic/quicwire", "q"}, + {"vendor/golang.org/x/net/nettest", "\x03n\x0e\x03\x84\x01\x11\x05\x18\x01\f\n\x01\x02\x02\x01\f"}, + {"vendor/golang.org/x/net/quic", "\x03\n\x01\x01\x01\t;\x04\x04\x15\x03\v\x03\x12r\x06\x06\x06\x04\x12\x06\x15\x02\x01\x02\x01\x01\r\x06\x02\x01\x01\x02\v"}, + {"vendor/golang.org/x/sys/cpu", "\xb4\x02\r\n\x01\x17"}, + {"vendor/golang.org/x/text/secure/bidirule", "\x7f\xe2\x01\x18\x01"}, + {"vendor/golang.org/x/text/transform", "\x03|\x87\x01["}, + {"vendor/golang.org/x/text/unicode/bidi", "\x03\bw\x88\x01@\x17"}, + {"vendor/golang.org/x/text/unicode/norm", "q\x11\x84\x01H\x13\x18"}, + {"weak", "\xa5\x01\x9c\x01\""}, } // bootstrap is the list of bootstrap packages extracted from cmd/dist. diff --git a/vendor/golang.org/x/tools/internal/stdlib/manifest.go b/vendor/golang.org/x/tools/internal/stdlib/manifest.go index 2180c296ec0..e11abf04553 100644 --- a/vendor/golang.org/x/tools/internal/stdlib/manifest.go +++ b/vendor/golang.org/x/tools/internal/stdlib/manifest.go @@ -9153,6 +9153,7 @@ var PackageSymbols = map[string][]Symbol{ {"CrossOriginProtection", Type, 25, ""}, {"DefaultClient", Var, 0, ""}, {"DefaultMaxHeaderBytes", Const, 0, ""}, + {"DefaultMaxHeaderValueCount", Const, 27, ""}, {"DefaultMaxIdleConnsPerHost", Const, 0, ""}, {"DefaultServeMux", Var, 0, ""}, {"DefaultTransport", Var, 0, ""}, @@ -9317,6 +9318,7 @@ var PackageSymbols = map[string][]Symbol{ {"Server.Handler", Field, 0, ""}, {"Server.IdleTimeout", Field, 8, ""}, {"Server.MaxHeaderBytes", Field, 0, ""}, + {"Server.MaxHeaderValueCount", Field, 27, ""}, {"Server.Protocols", Field, 24, ""}, {"Server.ReadHeaderTimeout", Field, 8, ""}, {"Server.ReadTimeout", Field, 0, ""}, diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go index 29d332e7b67..33344812746 100644 --- a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go @@ -150,8 +150,18 @@ var ( // throttling limit if unforeseen issues arise, and it will be removed in a // future release. // - // TODO: Remove this env var once v1.83.0 is release. + // TODO: Remove this env var once v1.83.0 is released. ControlBufferThrottleLimit = uint64FromEnv("GRPC_GO_EXPERIMENTAL_CONTROL_BUFFER_THROTTLE_LIMIT", 100, 1, 10000) + + // EnableReceiveBufferCompaction enables the compaction of data buffers + // to reduce the number of buffers in the receive buffer. + // + // This environment variable serves as an escape hatch to disable the + // feature if unforeseen issues arise, and it will be removed in a future + // release. + // + // TODO: Remove this env var once v1.85.0 is released. + EnableReceiveBufferCompaction = boolFromEnv("GRPC_GO_EXPERIMENTAL_ENABLE_RECEIVE_BUFFER_COMPACTION", true) ) func boolFromEnv(envVar string, def bool) bool { diff --git a/vendor/google.golang.org/grpc/internal/mem/buffer_pool.go b/vendor/google.golang.org/grpc/internal/mem/buffer_pool.go index 2d83b2eced1..00aeca419fe 100644 --- a/vendor/google.golang.org/grpc/internal/mem/buffer_pool.go +++ b/vendor/google.golang.org/grpc/internal/mem/buffer_pool.go @@ -26,12 +26,26 @@ import ( "slices" "sort" "sync" + + "google.golang.org/grpc/internal" ) const ( goPageSize = 4 * 1024 // 4KiB. N.B. this must be a power of 2. ) +var ( + // BufferPoolingThreshold is the minimum size of a buffer that can be pooled. + // This is used to determine whether to pool buffers or allocate them directly. + BufferPoolingThreshold = 1 << 10 +) + +func init() { + internal.SetBufferPoolingThresholdForTesting = func(threshold int) { + BufferPoolingThreshold = threshold + } +} + var uintSize = bits.UintSize // use a variable for mocking during tests. // bufferPool is a copy of the public bufferPool interface used to avoid diff --git a/vendor/google.golang.org/grpc/internal/transport/handler_server.go b/vendor/google.golang.org/grpc/internal/transport/handler_server.go index a8356c9adbc..9cd8d28d33e 100644 --- a/vendor/google.golang.org/grpc/internal/transport/handler_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/handler_server.go @@ -424,7 +424,7 @@ func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream st: ht, headerWireLength: 0, // won't have access to header wire length until golang/go#18997. } - s.Stream.buf.init() + s.Stream.buf.init(ht.bufferPool) s.readRequester = s s.trReader = transportReader{ reader: recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: &s.buf}, diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go index c19b45080e1..10d19774159 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_client.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go @@ -500,7 +500,7 @@ func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr, handler s headerChan: make(chan struct{}), statsHandler: handler, } - s.Stream.buf.init() + s.Stream.buf.init(t.bufferPool) s.Stream.wq.init(defaultWriteQuota, s.done) s.readRequester = s // The client side stream context should have exactly the same life cycle with the user provided context. diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go index be8ae9f9c54..82e13e64aa6 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go @@ -407,7 +407,7 @@ func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeade st: t, headerWireLength: int(frame.Header().Length), } - s.Stream.buf.init() + s.Stream.buf.init(t.bufferPool) var ( // if false, content-type was missing or invalid isGRPC = false @@ -522,6 +522,12 @@ func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeade delete(mdata, "host") } + // If :authority is still missing, i.e. no host or :authority header is + // present, reject the request as invalid. + if len(mdata[":authority"]) == 0 { + t.writeEarlyAbort(streamID, s.contentSubtype, status.New(codes.Internal, "no host or :authority header present"), http.StatusBadRequest, !frame.StreamEnded()) + return nil + } if frame.StreamEnded() { // s is just created by the caller. No lock needed. s.state = streamReadDone diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go index d2e49538f0b..5fc901e5cf1 100644 --- a/vendor/google.golang.org/grpc/internal/transport/transport.go +++ b/vendor/google.golang.org/grpc/internal/transport/transport.go @@ -30,11 +30,14 @@ import ( "sync" "sync/atomic" "time" + "unsafe" "golang.org/x/net/http2" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/envconfig" + imem "google.golang.org/grpc/internal/mem" "google.golang.org/grpc/internal/transport/internal" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/mem" @@ -45,7 +48,30 @@ import ( "google.golang.org/grpc/tap" ) -const logLevel = 2 +const ( + logLevel = 2 + // recvMsgSize estimates the memory overhead of a recvMsg in the backlog. + // It accounts for the recvMsg struct itself and the slice header of the + // underlying buffer's data. + recvMsgSize = int(unsafe.Sizeof(recvMsg{}) + unsafe.Sizeof([]byte{})) + + // utilizationFactor controls when we consider memory utilization acceptable. + // When backlogHeapSize / payloadSize <= utilizationFactor (meaning at least + // 50% of the heap memory is actual payload data), compaction is skipped. + utilizationFactor = 2 +) + +var ( + // compactionThreshold is approx 57KB (on 64-bit systems). It allows + // accumulating up to 1024 1-byte payloads before triggering compaction. + // + // Because individual payloads <= 1024 bytes are allocated on the heap + // outside mem.BufferPool, waiting for at least 1024 bytes to accumulate + // ensures that compaction coalesces those small heap allocations into a + // single large buffer from mem.BufferPool, enabling buffer reuse while + // avoiding frequent copying for small bursts of frames. + compactionThreshold = imem.BufferPoolingThreshold * (recvMsgSize + 1) +) func init() { internal.TimeNowFunc = func() int64 { return time.Now().UnixNano() } @@ -71,23 +97,31 @@ type recvBuffer struct { c chan recvMsg mu sync.Mutex backlog []recvMsg - err error + // uncompactedSuffixLen tracks the number of consecutive data messages at + // the tail of backlog that have not been compacted. + uncompactedSuffixLen int + // uncompactedBytes tracks the total payload bytes across the trailing + // uncompactedSuffixLen messages. + uncompactedBytes int + err error + bufPool mem.BufferPool } // init allows a recvBuffer to be initialized in-place, which is useful // for resetting a buffer or for avoiding a heap allocation when the buffer // is embedded in another struct. -func (b *recvBuffer) init() { +func (b *recvBuffer) init(pool mem.BufferPool) { b.c = make(chan recvMsg, 1) + b.bufPool = pool } func (b *recvBuffer) put(r recvMsg) { b.mu.Lock() + defer b.mu.Unlock() if b.err != nil { // drop the buffer on the floor. Since b.err is not nil, any subsequent reads // will always return an error, making this buffer inaccessible. r.buffer.Free() - b.mu.Unlock() // An error had occurred earlier, don't accept more // data or errors. return @@ -96,13 +130,70 @@ func (b *recvBuffer) put(r recvMsg) { if len(b.backlog) == 0 { select { case b.c <- r: - b.mu.Unlock() return default: } } b.backlog = append(b.backlog, r) - b.mu.Unlock() + b.compactBacklogLocked(r) +} + +func (b *recvBuffer) compactBacklogLocked(r recvMsg) { + if !envconfig.EnableReceiveBufferCompaction { + return + } + if r.buffer == nil { + b.uncompactedBytes = 0 + b.uncompactedSuffixLen = 0 + return + } + + b.uncompactedSuffixLen++ + b.uncompactedBytes += r.buffer.Len() + backlogHeapSize := b.uncompactedSuffixLen*recvMsgSize + b.uncompactedBytes + + // If the memory overhead is less than 50% of the heap usage (e.g., because + // a large DATA frame arrived), the average message size in the suffix is + // large enough that memory bloat is not a concern. Reset suffix tracking. + if backlogHeapSize <= utilizationFactor*b.uncompactedBytes { + b.uncompactedBytes = 0 + b.uncompactedSuffixLen = 0 + return + } + // Avoid compacting too frequently for short bursts of small frames. + // Wait until we have accumulated at least ~1024 small messages (~57 KB). + if backlogHeapSize <= compactionThreshold { + // Still can accumulate more payloads. + return + } + + // Since the memory utilization is less than 50%, the average payload size + // of each recvMsg must be less than recvMsgSize (approx 56 bytes). + // In the worst case for bytes copied (where the average payload is just + // below recvMsgSize), compaction will occur once every: + // compactionThreshold / (recvMsgSize + avg_payload) = ~520 messages, + // copying ~29KB of data. + + start := 0 + newBuf := b.bufPool.Get(b.uncompactedBytes) + startIdx := len(b.backlog) - b.uncompactedSuffixLen + + for i := startIdx; i < len(b.backlog); i++ { + m := b.backlog[i] + b.backlog[i] = recvMsg{} + start += copy((*newBuf)[start:], m.buffer.ReadOnlyData()) + m.buffer.Free() + } + b.backlog[startIdx] = recvMsg{ + buffer: mem.NewBuffer(newBuf, b.bufPool), + } + b.backlog = b.backlog[:startIdx+1] + // After compaction, the suffix is replaced with a single message containing + // the combined payload. The new utilization is close to 1.0 (overhead of + // one recvMsg relative to the large compacted payload), which is well + // below the utilization factor of 2. + b.uncompactedBytes = 0 + b.uncompactedSuffixLen = 0 } func (b *recvBuffer) load() { @@ -110,6 +201,13 @@ func (b *recvBuffer) load() { if len(b.backlog) > 0 { select { case b.c <- b.backlog[0]: + // backlog[0] is only part of the tracked uncompacted suffix if the + // entire backlog currently consists of the suffix. If an earlier + // compaction or reset occurred, backlog[0] is already compacted. + if envconfig.EnableReceiveBufferCompaction && b.uncompactedSuffixLen == len(b.backlog) { + b.uncompactedSuffixLen-- + b.uncompactedBytes -= b.backlog[0].buffer.Len() + } b.backlog[0] = recvMsg{} b.backlog = b.backlog[1:] default: diff --git a/vendor/google.golang.org/grpc/internal/xds/httpfilter/rbac/rbac.go b/vendor/google.golang.org/grpc/internal/xds/httpfilter/rbac/rbac.go index eb42a7fb1ff..1af2c2065ba 100644 --- a/vendor/google.golang.org/grpc/internal/xds/httpfilter/rbac/rbac.go +++ b/vendor/google.golang.org/grpc/internal/xds/httpfilter/rbac/rbac.go @@ -32,6 +32,7 @@ import ( "google.golang.org/protobuf/types/known/anypb" v3rbacpb "github.com/envoyproxy/go-control-plane/envoy/config/rbac/v3" + v3routepb "github.com/envoyproxy/go-control-plane/envoy/config/route/v3" rpb "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/rbac/v3" ) @@ -68,36 +69,25 @@ func parseConfig(rbacCfg *rpb.RBAC) (httpfilter.FilterConfig, error) { } // "It is also a validation failure if Permission or Principal has a - // header matcher for a grpc- prefixed header name or :scheme." - A41 - for _, principal := range policy.Principals { - name := principal.GetHeader().GetName() - if name == ":scheme" || strings.HasPrefix(name, "grpc-") { - return nil, fmt.Errorf("rbac: principal header matcher for %v is :scheme or starts with grpc", name) + // header matcher for a grpc- prefixed header name or :scheme." - A41. + // + // "Envoy aliases :authority and Host in its header map implementation, + // so they should be treated equivalent for the RBAC matchers; there must + // be no behavior change depending on which of the two header names is + // used in the RBAC policy." - A41. Any header matcher with value "host" + // is rewritten to ":authority", as that is what grpc-go shifts both + // headers to in the transport layer. + // + // Both rules apply to header matchers nested inside and/or/not rules, so + // the whole permission and principal trees are walked. + for _, principal := range policy.GetPrincipals() { + if err := normalizePrincipalHeaders(principal); err != nil { + return nil, err } } - for _, permission := range policy.Permissions { - name := permission.GetHeader().GetName() - if name == ":scheme" || strings.HasPrefix(name, "grpc-") { - return nil, fmt.Errorf("rbac: permission header matcher for %v is :scheme or starts with grpc", name) - } - } - } - - // "Envoy aliases :authority and Host in its header map implementation, so - // they should be treated equivalent for the RBAC matchers; there must be no - // behavior change depending on which of the two header names is used in the - // RBAC policy." - A41. Loop through config's principals and policies, change - // any header matcher with value "host" to :authority", as that is what - // grpc-go shifts both headers to in transport layer. - for _, policy := range rbacCfg.GetRules().GetPolicies() { - for _, principal := range policy.Principals { - if principal.GetHeader().GetName() == "host" { - principal.GetHeader().Name = ":authority" - } - } - for _, permission := range policy.Permissions { - if permission.GetHeader().GetName() == "host" { - permission.GetHeader().Name = ":authority" + for _, permission := range policy.GetPermissions() { + if err := normalizePermissionHeaders(permission); err != nil { + return nil, err } } } @@ -126,6 +116,82 @@ func parseConfig(rbacCfg *rpb.RBAC) (httpfilter.FilterConfig, error) { return config{chainEngine: ce}, nil } +// normalizePermissionHeaders applies the A41 header-name rules to every header +// matcher reachable from permission, including those nested inside and/or/not +// rules. +func normalizePermissionHeaders(permission *v3rbacpb.Permission) error { + switch p := permission.GetRule().(type) { + case *v3rbacpb.Permission_Header: + return normalizeHeaderMatcher(p.Header) + case *v3rbacpb.Permission_AndRules: + for _, rule := range p.AndRules.GetRules() { + if err := normalizePermissionHeaders(rule); err != nil { + return err + } + } + case *v3rbacpb.Permission_OrRules: + for _, rule := range p.OrRules.GetRules() { + if err := normalizePermissionHeaders(rule); err != nil { + return err + } + } + case *v3rbacpb.Permission_NotRule: + return normalizePermissionHeaders(p.NotRule) + } + return nil +} + +// normalizePrincipalHeaders applies the A41 header-name rules to every header +// matcher reachable from principal, including those nested inside and/or/not +// ids. +func normalizePrincipalHeaders(principal *v3rbacpb.Principal) error { + switch p := principal.GetIdentifier().(type) { + case *v3rbacpb.Principal_Header: + return normalizeHeaderMatcher(p.Header) + case *v3rbacpb.Principal_AndIds: + for _, id := range p.AndIds.GetIds() { + if err := normalizePrincipalHeaders(id); err != nil { + return err + } + } + case *v3rbacpb.Principal_OrIds: + for _, id := range p.OrIds.GetIds() { + if err := normalizePrincipalHeaders(id); err != nil { + return err + } + } + case *v3rbacpb.Principal_NotId: + return normalizePrincipalHeaders(p.NotId) + } + return nil +} + +// normalizeHeaderMatcher lowercases the name of a header matcher, rejects the +// names that A41 forbids (:scheme or a grpc- prefixed name) and rewrites a +// "host" matcher to ":authority". +func normalizeHeaderMatcher(header *v3routepb.HeaderMatcher) error { + // The keys of the metadata the matchers run against are always lowercase, + // so a name that contains an uppercase character matches no header at all + // and the rule using it never fires. Lowercase the name, as Envoy and + // grpc-java do, both to make it match and to keep the checks below from + // being evaded by the case of the name. + name := header.GetName() + lowerName := strings.ToLower(name) + if lowerName != name { + header.Name = lowerName + } + if lowerName == ":scheme" { + return fmt.Errorf("rbac: header matcher for %q is %q", name, ":scheme") + } + if strings.HasPrefix(lowerName, "grpc-") { + return fmt.Errorf("rbac: header matcher for %q starts with %q", name, "grpc-") + } + if lowerName == "host" { + header.Name = ":authority" + } + return nil +} + func (builder) ParseFilterConfig(cfg proto.Message) (httpfilter.FilterConfig, error) { if cfg == nil { return nil, fmt.Errorf("rbac: nil configuration message provided") diff --git a/vendor/google.golang.org/grpc/internal/xds/server/routing.go b/vendor/google.golang.org/grpc/internal/xds/server/routing.go index 67dd7609e1f..706872585e7 100644 --- a/vendor/google.golang.org/grpc/internal/xds/server/routing.go +++ b/vendor/google.golang.org/grpc/internal/xds/server/routing.go @@ -62,11 +62,14 @@ func RouteAndProcess(ctx context.Context) error { if !ok { return errors.New("missing metadata in incoming context") } - // A41 added logic to the core grpc implementation to guarantee that once - // the RPC gets to this point, there will be a single, unambiguous authority - // present in the header map. + // A41 added logic to the core grpc implementation to guarantee that once the + // RPC gets to this point, there will be a single, unambiguous authority + // present in the header map. But add a defensive check to ensure authority + // header is present. authority := md.Get(":authority") - // authority[0] is safe because of the guarantee mentioned above. + if len(authority) == 0 { + return rc.statusErrWithNodeID(codes.Internal, "no :authority header present") + } vh := findBestMatchingVirtualHostServer(authority[0], rc.vhs) if vh == nil { return rc.statusErrWithNodeID(codes.Unavailable, "the incoming RPC did not match a configured Virtual Host") diff --git a/vendor/google.golang.org/grpc/mem/buffer_pool.go b/vendor/google.golang.org/grpc/mem/buffer_pool.go index 3b02b909164..aa121379fd5 100644 --- a/vendor/google.golang.org/grpc/mem/buffer_pool.go +++ b/vendor/google.golang.org/grpc/mem/buffer_pool.go @@ -59,10 +59,6 @@ func init() { internal.SetDefaultBufferPool = func(pool BufferPool) { defaultBufferPool = pool } - - internal.SetBufferPoolingThresholdForTesting = func(threshold int) { - bufferPoolingThreshold = threshold - } } // DefaultBufferPool returns the current default buffer pool. It is a BufferPool diff --git a/vendor/google.golang.org/grpc/mem/buffers.go b/vendor/google.golang.org/grpc/mem/buffers.go index 2b410b16ebd..9b355d4465b 100644 --- a/vendor/google.golang.org/grpc/mem/buffers.go +++ b/vendor/google.golang.org/grpc/mem/buffers.go @@ -29,6 +29,8 @@ import ( "fmt" "sync" "sync/atomic" + + "google.golang.org/grpc/internal/mem" ) // A Buffer represents a reference counted piece of data (in bytes) that can be @@ -63,8 +65,6 @@ type Buffer interface { } var ( - bufferPoolingThreshold = 1 << 10 - bufferObjectPool = sync.Pool{New: func() any { return new(buffer) }} ) @@ -72,7 +72,7 @@ var ( // equal to the threshold for buffer pooling. This is used to determine whether // to pool buffers or allocate them directly. func IsBelowBufferPoolingThreshold(size int) bool { - return size <= bufferPoolingThreshold + return size <= mem.BufferPoolingThreshold } type buffer struct { diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go index 4083c03908f..835dc07fdc5 100644 --- a/vendor/google.golang.org/grpc/version.go +++ b/vendor/google.golang.org/grpc/version.go @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.83.0" +const Version = "1.83.2" diff --git a/vendor/modules.txt b/vendor/modules.txt index 2b7c63658bb..64d41a930f2 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1709,7 +1709,7 @@ go.yaml.in/yaml/v2 # go.yaml.in/yaml/v3 v3.0.4 ## explicit; go 1.16 go.yaml.in/yaml/v3 -# golang.org/x/crypto v0.54.0 +# golang.org/x/crypto v0.55.0 ## explicit; go 1.25.0 golang.org/x/crypto/argon2 golang.org/x/crypto/bcrypt @@ -1730,10 +1730,10 @@ golang.org/x/crypto/scrypt ## explicit; go 1.25.0 golang.org/x/exp/constraints golang.org/x/exp/slices -# golang.org/x/mod v0.37.0 +# golang.org/x/mod v0.38.0 ## explicit; go 1.25.0 golang.org/x/mod/semver -# golang.org/x/net v0.57.0 +# golang.org/x/net v0.58.0 ## explicit; go 1.25.0 golang.org/x/net/bpf golang.org/x/net/context @@ -1777,7 +1777,7 @@ golang.org/x/sys/cpu golang.org/x/sys/unix golang.org/x/sys/windows golang.org/x/sys/windows/registry -# golang.org/x/text v0.40.0 +# golang.org/x/text v0.41.0 ## explicit; go 1.25.0 golang.org/x/text/cases golang.org/x/text/internal @@ -1793,7 +1793,7 @@ golang.org/x/text/unicode/norm # golang.org/x/time v0.15.0 ## explicit; go 1.25.0 golang.org/x/time/rate -# golang.org/x/tools v0.47.0 +# golang.org/x/tools v0.48.0 ## explicit; go 1.25.0 golang.org/x/tools/go/analysis golang.org/x/tools/go/analysis/checker @@ -1871,7 +1871,7 @@ google.golang.org/genproto/googleapis/api/monitoredres google.golang.org/genproto/googleapis/rpc/code google.golang.org/genproto/googleapis/rpc/errdetails google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/grpc v1.83.0 +# google.golang.org/grpc v1.83.2 ## explicit; go 1.25.0 google.golang.org/grpc google.golang.org/grpc/attributes