From b5084d02f0083d137435bb478765f9ebb8bf396c Mon Sep 17 00:00:00 2001 From: Dominik Roos Date: Thu, 31 Aug 2023 17:56:23 +0200 Subject: [PATCH 1/8] build: update quic-go version Update the quic-go version to v0.36.3. This is the last version that does not require Go 1.20 yet. We will upgrade the Go version in a follow up PR. --- WORKSPACE | 16 +- gateway/BUILD.bazel | 2 +- gateway/gateway.go | 2 +- go.mod | 29 ++-- go.sum | 76 ++++------ go_deps.bzl | 143 ++++++++---------- nogo.json | 8 +- .../com_github_quic_go_quic_go/BUILD.bazel | 3 + patches/com_github_quic_go_quic_go/README.md | 8 + .../com_github_quic_go_quic_go/ignore.patch | 12 ++ pkg/snet/squic/BUILD.bazel | 4 +- pkg/snet/squic/net.go | 20 +-- pkg/snet/squic/net_test.go | 2 +- private/app/appnet/BUILD.bazel | 2 +- private/app/appnet/infraenv.go | 2 +- 15 files changed, 158 insertions(+), 171 deletions(-) create mode 100644 patches/com_github_quic_go_quic_go/BUILD.bazel create mode 100644 patches/com_github_quic_go_quic_go/README.md create mode 100644 patches/com_github_quic_go_quic_go/ignore.patch diff --git a/WORKSPACE b/WORKSPACE index a19a966fe9..a978456a5f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -72,7 +72,21 @@ http_archive( ], ) -load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") +load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") + +# Explictly override golang.org/x/sys. Our github.com/quic-go/quic-go cannot +# compile without at least golang.org/x/sys@v0.2.0. The rules_go version that +# we use (v0.34.0) imports an older version. A recent enough version was only introduced +# in v0.36.0. See: https://github.com/bazelbuild/rules_go/commit/64b9226a3bca997866b8831889ffb9de87405a0d +# +# This version should be kept in sync with the go_deps.bzl file. We can remove it +# once we update the rules_go version. +go_repository( + name = "org_golang_x_sys", + importpath = "golang.org/x/sys", + sum = "h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=", + version = "v0.8.0", +) go_rules_dependencies() diff --git a/gateway/BUILD.bazel b/gateway/BUILD.bazel index 20a9406fb5..902fb0db7b 100644 --- a/gateway/BUILD.bazel +++ b/gateway/BUILD.bazel @@ -38,9 +38,9 @@ go_library( "//private/service:go_default_library", "//private/svc:go_default_library", "//private/worker:go_default_library", - "@com_github_lucas_clemente_quic_go//:go_default_library", "@com_github_prometheus_client_golang//prometheus:go_default_library", "@com_github_prometheus_client_golang//prometheus/promauto:go_default_library", + "@com_github_quic_go_quic_go//:go_default_library", "@org_golang_google_grpc//:go_default_library", ], ) diff --git a/gateway/gateway.go b/gateway/gateway.go index d6fe36e583..0e111e7ba8 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -24,8 +24,8 @@ import ( "strconv" "time" - quic "github.com/lucas-clemente/quic-go" "github.com/prometheus/client_golang/prometheus" + quic "github.com/quic-go/quic-go" "google.golang.org/grpc" "github.com/scionproto/scion/gateway/control" diff --git a/go.mod b/go.mod index f7bb611620..3826f25868 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/go-chi/chi/v5 v5.0.8 github.com/go-chi/cors v1.2.1 github.com/golang/mock v1.6.0 - github.com/golang/protobuf v1.5.2 + github.com/golang/protobuf v1.5.3 github.com/google/go-cmp v0.5.9 github.com/google/go-containerregistry v0.13.0 github.com/google/gopacket v1.1.19 @@ -21,7 +21,6 @@ require ( github.com/hashicorp/golang-lru v0.6.0 github.com/iancoleman/strcase v0.2.0 github.com/lestrrat-go/jwx v1.2.25 - github.com/lucas-clemente/quic-go v0.29.1 github.com/mattn/go-isatty v0.0.17 github.com/mattn/go-sqlite3 v1.14.17 github.com/olekukonko/tablewriter v0.0.5 @@ -30,6 +29,7 @@ require ( github.com/pelletier/go-toml v1.9.5 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.14.0 + github.com/quic-go/quic-go v0.36.3 github.com/sergi/go-diff v1.3.1 github.com/smartystreets/goconvey v1.7.2 github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 @@ -43,9 +43,9 @@ require ( go.uber.org/zap v1.24.0 go4.org/netipx v0.0.0-20230125063823-8449b0a6169f golang.org/x/crypto v0.6.0 - golang.org/x/net v0.7.0 - golang.org/x/sync v0.1.0 - golang.org/x/tools v0.6.0 + golang.org/x/net v0.10.0 + golang.org/x/sync v0.2.0 + golang.org/x/tools v0.9.1 google.golang.org/grpc v1.53.0 google.golang.org/grpc/examples v0.0.0-20230222033013-5353eaa44095 google.golang.org/protobuf v1.28.1 @@ -67,9 +67,10 @@ require ( github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/swag v0.21.1 // indirect - github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/goccy/go-json v0.9.11 // indirect github.com/google/go-querystring v1.0.1-0.20190318165438-c8c88dbee036 // indirect + github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 // indirect github.com/google/uuid v1.3.0 // indirect github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -85,21 +86,20 @@ require ( github.com/lestrrat-go/option v1.0.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/marten-seemann/qtls-go1-18 v0.1.2 // indirect - github.com/marten-seemann/qtls-go1-19 v0.1.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect - github.com/nxadm/tail v1.4.8 // indirect - github.com/onsi/ginkgo v1.16.4 // indirect + github.com/onsi/ginkgo/v2 v2.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/perimeterx/marshmallow v1.1.4 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.3.0 // indirect github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect + github.com/quic-go/qtls-go1-19 v0.3.3 // indirect + github.com/quic-go/qtls-go1-20 v0.2.3 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/smartystreets/assertions v1.2.0 // indirect @@ -111,13 +111,12 @@ require ( github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect - golang.org/x/mod v0.8.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/exp v0.0.0-20221205204356-47842c84f3db // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect + golang.org/x/text v0.9.0 // indirect google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/uint128 v1.2.0 // indirect modernc.org/cc/v3 v3.40.0 // indirect diff --git a/go.sum b/go.sum index 4568a3f268..554c90224e 100644 --- a/go.sum +++ b/go.sum @@ -106,8 +106,6 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/getkin/kin-openapi v0.114.0 h1:ar7QiJpDdlR+zSyPjrLf8mNnpoFP/lI90XcywMCFNe8= @@ -127,14 +125,15 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU= github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= @@ -170,8 +169,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -208,6 +208,7 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -230,7 +231,6 @@ github.com/hashicorp/golang-lru v0.6.0 h1:uL2shRDx7RTrOrTCUZEGP/wJUFiUI8QT6E7z5o github.com/hashicorp/golang-lru v0.6.0/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -280,8 +280,6 @@ github.com/lestrrat-go/jwx v1.2.25 h1:tAx93jN2SdPvFn08fHNAhqFJazn5mBBOB8Zli0g0ot github.com/lestrrat-go/jwx v1.2.25/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY= github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4= github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= -github.com/lucas-clemente/quic-go v0.29.1 h1:Z+WMJ++qMLhvpFkRZA+jl3BTxUjm415YBmWanXB8zP0= -github.com/lucas-clemente/quic-go v0.29.1/go.mod h1:CTcNfLYJS2UuRNB+zcNlgvkjBhxX6Hm3WUxxAQx2mgE= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -289,10 +287,6 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/marten-seemann/qtls-go1-18 v0.1.2 h1:JH6jmzbduz0ITVQ7ShevK10Av5+jBEKAHMntXmIV7kM= -github.com/marten-seemann/qtls-go1-18 v0.1.2/go.mod h1:mJttiymBAByA49mhlNZZGrH5u1uXYZJ+RW28Py7f4m4= -github.com/marten-seemann/qtls-go1-19 v0.1.0 h1:rLFKD/9mp/uq1SYGYuVZhm83wkmU95pK5df3GufyYYU= -github.com/marten-seemann/qtls-go1-19 v0.1.0/go.mod h1:5HTDWtVudo/WFsHKRNuOhWlbdjrfs5JHrYb0wIJqGpI= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -317,18 +311,11 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwd github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -375,6 +362,12 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/quic-go/qtls-go1-19 v0.3.3 h1:wznEHvJwd+2X3PqftRha0SUKmGsnb6dfArMhy9PeJVE= +github.com/quic-go/qtls-go1-19 v0.3.3/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= +github.com/quic-go/qtls-go1-20 v0.2.3 h1:m575dovXn1y2ATOb1XrRFcrv0F+EQmlowTkoraNkDPI= +github.com/quic-go/qtls-go1-20 v0.2.3/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= +github.com/quic-go/quic-go v0.36.3 h1:f+yOqeGhMoRX7/M3wmEw/djhzKWr15FtQysox85/834= +github.com/quic-go/quic-go v0.36.3/go.mod h1:qxQumdeKw5GmWs1OsTZZnOxzSI+RJWuhf1O8FN35L2o= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= @@ -483,8 +476,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20221205204356-47842c84f3db h1:D/cFflL63o2KSLJIwjlcIt8PR064j/xsmdEJL/YvY/o= +golang.org/x/exp v0.0.0-20221205204356-47842c84f3db/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -509,11 +502,10 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 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.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 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-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -536,7 +528,6 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -551,8 +542,8 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 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= @@ -575,11 +566,10 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -590,10 +580,7 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -619,7 +606,6 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -633,8 +619,8 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -645,8 +631,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 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= @@ -696,14 +682,13 @@ golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82u golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= 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= @@ -814,11 +799,8 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/go_deps.bzl b/go_deps.bzl index 0d1273f018..6bc4b59224 100644 --- a/go_deps.bzl +++ b/go_deps.bzl @@ -118,8 +118,8 @@ def go_deps(): go_repository( name = "com_github_chzyer_readline", importpath = "github.com/chzyer/readline", - sum = "h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=", - version = "v0.0.0-20180603132655-2972be24d48e", + sum = "h1:lSwwFrbNviGePhkewF1az4oLmcwqCZijQ2/Wi3BGHAI=", + version = "v1.5.0", ) go_repository( name = "com_github_chzyer_test", @@ -355,6 +355,12 @@ def go_deps(): sum = "h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA=", version = "v0.5.1", ) + go_repository( + name = "com_github_go_logr_logr", + importpath = "github.com/go-logr/logr", + sum = "h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=", + version = "v1.2.4", + ) go_repository( name = "com_github_go_openapi_jsonpointer", importpath = "github.com/go-openapi/jsonpointer", @@ -394,8 +400,8 @@ def go_deps(): go_repository( name = "com_github_go_task_slim_sprig", importpath = "github.com/go-task/slim-sprig", - sum = "h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=", - version = "v0.0.0-20210107165309-348f09dbbbc0", + sum = "h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=", + version = "v0.0.0-20230315185526-52ccab3ef572", ) go_repository( name = "com_github_go_test_deep", @@ -442,8 +448,8 @@ def go_deps(): go_repository( name = "com_github_golang_protobuf", importpath = "github.com/golang/protobuf", - sum = "h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=", - version = "v1.5.2", + sum = "h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=", + version = "v1.5.3", ) go_repository( name = "com_github_golangci_lint_1", @@ -613,12 +619,6 @@ def go_deps(): sum = "h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY=", version = "v0.10.1", ) - go_repository( - name = "com_github_hpcloud_tail", - importpath = "github.com/hpcloud/tail", - sum = "h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=", - version = "v1.0.0", - ) go_repository( name = "com_github_iancoleman_strcase", importpath = "github.com/iancoleman/strcase", @@ -628,8 +628,8 @@ def go_deps(): go_repository( name = "com_github_ianlancetaylor_demangle", importpath = "github.com/ianlancetaylor/demangle", - sum = "h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI=", - version = "v0.0.0-20200824232613-28f6c0f3b639", + sum = "h1:rcanfLhLDA8nozr/K289V1zcntHr3V+SHlXwzz1ZI2g=", + version = "v0.0.0-20220319035150-800ac71e25c2", ) go_repository( name = "com_github_inconshreveable_mousetrap", @@ -805,13 +805,6 @@ def go_deps(): sum = "h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4=", version = "v1.0.0", ) - go_repository( - name = "com_github_lucas_clemente_quic_go", - build_directives = ["gazelle:exclude internal/qtls/go116.go"], # XXX(matzf): exclude go-1.16 file that should not be built, but gazelle does not properly understand the release tags. - importpath = "github.com/lucas-clemente/quic-go", - sum = "h1:Z+WMJ++qMLhvpFkRZA+jl3BTxUjm415YBmWanXB8zP0=", - version = "v0.29.1", - ) go_repository( name = "com_github_magiconair_properties", importpath = "github.com/magiconair/properties", @@ -824,24 +817,6 @@ def go_deps(): sum = "h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=", version = "v0.7.7", ) - go_repository( - name = "com_github_marten_seemann_qpack", - importpath = "github.com/marten-seemann/qpack", - sum = "h1:jvTsT/HpCn2UZJdP+UUB53FfUUgeOyG5K1ns0OJOGVs=", - version = "v0.2.1", - ) - go_repository( - name = "com_github_marten_seemann_qtls_go1_18", - importpath = "github.com/marten-seemann/qtls-go1-18", - sum = "h1:JH6jmzbduz0ITVQ7ShevK10Av5+jBEKAHMntXmIV7kM=", - version = "v0.1.2", - ) - go_repository( - name = "com_github_marten_seemann_qtls_go1_19", - importpath = "github.com/marten-seemann/qtls-go1-19", - sum = "h1:rLFKD/9mp/uq1SYGYuVZhm83wkmU95pK5df3GufyYYU=", - version = "v0.1.0", - ) go_repository( name = "com_github_matryer_moq", importpath = "github.com/matryer/moq", @@ -938,12 +913,6 @@ def go_deps(): sum = "h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=", version = "v0.0.0-20200227124842-a10e7caefd8e", ) - go_repository( - name = "com_github_nxadm_tail", - importpath = "github.com/nxadm/tail", - sum = "h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=", - version = "v1.4.8", - ) go_repository( name = "com_github_olekukonko_tablewriter", importpath = "github.com/olekukonko/tablewriter", @@ -951,16 +920,16 @@ def go_deps(): version = "v0.0.5", ) go_repository( - name = "com_github_onsi_ginkgo", - importpath = "github.com/onsi/ginkgo", - sum = "h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=", - version = "v1.16.4", + name = "com_github_onsi_ginkgo_v2", + importpath = "github.com/onsi/ginkgo/v2", + sum = "h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q=", + version = "v2.9.5", ) go_repository( name = "com_github_onsi_gomega", importpath = "github.com/onsi/gomega", - sum = "h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak=", - version = "v1.13.0", + sum = "h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE=", + version = "v1.27.6", ) go_repository( name = "com_github_opencontainers_go_digest", @@ -1046,6 +1015,34 @@ def go_deps(): sum = "h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo=", version = "v0.8.0", ) + go_repository( + name = "com_github_quic_go_qpack", + importpath = "github.com/quic-go/qpack", + sum = "h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=", + version = "v0.4.0", + ) + go_repository( + name = "com_github_quic_go_qtls_go1_19", + importpath = "github.com/quic-go/qtls-go1-19", + sum = "h1:wznEHvJwd+2X3PqftRha0SUKmGsnb6dfArMhy9PeJVE=", + version = "v0.3.3", + ) + go_repository( + name = "com_github_quic_go_qtls_go1_20", + importpath = "github.com/quic-go/qtls-go1-20", + sum = "h1:m575dovXn1y2ATOb1XrRFcrv0F+EQmlowTkoraNkDPI=", + version = "v0.2.3", + ) + go_repository( + name = "com_github_quic_go_quic_go", + importpath = "github.com/quic-go/quic-go", + patch_args = ["-p1"], # keep + patches = [ + "@//patches/com_github_quic_go_quic_go:ignore.patch", # keep + ], + sum = "h1:f+yOqeGhMoRX7/M3wmEw/djhzKWr15FtQysox85/834=", + version = "v0.36.3", + ) go_repository( name = "com_github_ravenox_go_jsoncommentstrip", importpath = "github.com/RaveNoX/go-jsoncommentstrip", @@ -1982,24 +1979,12 @@ def go_deps(): sum = "h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=", version = "v2.1.0", ) - go_repository( - name = "in_gopkg_fsnotify_v1", - importpath = "gopkg.in/fsnotify.v1", - sum = "h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=", - version = "v1.4.7", - ) go_repository( name = "in_gopkg_ini_v1", importpath = "gopkg.in/ini.v1", sum = "h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=", version = "v1.67.0", ) - go_repository( - name = "in_gopkg_tomb_v1", - importpath = "gopkg.in/tomb.v1", - sum = "h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=", - version = "v1.0.0-20141024135613-dd632973f1e7", - ) go_repository( name = "in_gopkg_yaml_v2", importpath = "gopkg.in/yaml.v2", @@ -2111,8 +2096,8 @@ def go_deps(): go_repository( name = "org_golang_x_exp", importpath = "golang.org/x/exp", - sum = "h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=", - version = "v0.0.0-20220722155223-a9213eeb770e", + sum = "h1:D/cFflL63o2KSLJIwjlcIt8PR064j/xsmdEJL/YvY/o=", + version = "v0.0.0-20221205204356-47842c84f3db", ) go_repository( name = "org_golang_x_exp_typeparams", @@ -2141,14 +2126,14 @@ def go_deps(): go_repository( name = "org_golang_x_mod", importpath = "golang.org/x/mod", - sum = "h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=", - version = "v0.8.0", + sum = "h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=", + version = "v0.10.0", ) go_repository( name = "org_golang_x_net", importpath = "golang.org/x/net", - sum = "h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=", - version = "v0.7.0", + sum = "h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=", + version = "v0.10.0", ) go_repository( name = "org_golang_x_oauth2", @@ -2159,26 +2144,26 @@ def go_deps(): go_repository( name = "org_golang_x_sync", importpath = "golang.org/x/sync", - sum = "h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=", - version = "v0.1.0", + sum = "h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=", + version = "v0.2.0", ) go_repository( name = "org_golang_x_sys", importpath = "golang.org/x/sys", - sum = "h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=", - version = "v0.5.0", + sum = "h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=", + version = "v0.8.0", ) go_repository( name = "org_golang_x_term", importpath = "golang.org/x/term", - sum = "h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=", - version = "v0.5.0", + sum = "h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=", + version = "v0.8.0", ) go_repository( name = "org_golang_x_text", importpath = "golang.org/x/text", - sum = "h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=", - version = "v0.7.0", + sum = "h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=", + version = "v0.9.0", ) go_repository( name = "org_golang_x_time", @@ -2189,8 +2174,8 @@ def go_deps(): go_repository( name = "org_golang_x_tools", importpath = "golang.org/x/tools", - sum = "h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=", - version = "v0.6.0", + sum = "h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo=", + version = "v0.9.1", ) go_repository( name = "org_golang_x_xerrors", diff --git a/nogo.json b/nogo.json index 8e6ff5d7fa..d87461c690 100644 --- a/nogo.json +++ b/nogo.json @@ -44,7 +44,6 @@ "gazelle/cmd/gazelle/diff.go": "", "/in_gopkg_yaml_v2/decode.go": "https://github.com/go-yaml/yaml/pull/492", "/com_github_mattn_go_sqlite3": "", - "/com_github_lucas_clemente_quic_go": "", "/com_github_cloudflare_sidh": "", "/com_github_vishvananda_netlink": "" } @@ -183,9 +182,6 @@ "com_github_hashicorp_hcl": "", "com_github_stretchr_testify/assert": "", "com_github_spf13_afero": "", - "com_github_marten_seemann_qtls_go1_16": "", - "com_github_marten_seemann_qtls_go1_17": "", - "com_github_lucas_clemente_quic_go": "", "com_github_lestrrat_go_jwx": "", "com_github_pelletier_go_toml": "", "com_github_mdlayher_raw": "", @@ -197,7 +193,6 @@ "com_github_spf13_viper": "", "com_github_labstack_echo_v4": "", "com_github_deepmap_oapi_codegen": "", - "pkg/private/serrors/errors.go": "err shadowed", "pkg/slayers/path/scion/raw.go": "err shadowed", "pkg/scrypto/cppki/trc.go": "err shadowed", @@ -211,7 +206,8 @@ "org_golang_x_crypto/ed25519/internal/edwards25519": "", "com_github_vishvananda_netlink/nl": "", "com_github_deepmap_oapi_codegen/pkg/codegen": "", - "com_github_bazelbuild_buildtools": "" + "com_github_bazelbuild_buildtools": "", + "com_github_quic_go_quic_go/internal/wire/ack_frame.go": "" } } } diff --git a/patches/com_github_quic_go_quic_go/BUILD.bazel b/patches/com_github_quic_go_quic_go/BUILD.bazel new file mode 100644 index 0000000000..039ab957bd --- /dev/null +++ b/patches/com_github_quic_go_quic_go/BUILD.bazel @@ -0,0 +1,3 @@ +exports_files(glob([ + "*.patch", +])) diff --git a/patches/com_github_quic_go_quic_go/README.md b/patches/com_github_quic_go_quic_go/README.md new file mode 100644 index 0000000000..0e0f4167c8 --- /dev/null +++ b/patches/com_github_quic_go_quic_go/README.md @@ -0,0 +1,8 @@ +# quic-go patches + +The [ignore.patch](./ignore.patch) ignores the qtls-go1-20 dependency that is +generated by gazelle. qtls-go1-20 requires Go version 1.20, and is hidden behind +a build tag that gazelle ignores. Bazel then tries to build qtls-go1-20 with Go 1.19, +which obviously does not work. + +This patch can be removed as soon as we update the Go version. diff --git a/patches/com_github_quic_go_quic_go/ignore.patch b/patches/com_github_quic_go_quic_go/ignore.patch new file mode 100644 index 0000000000..a4375e51f5 --- /dev/null +++ b/patches/com_github_quic_go_quic_go/ignore.patch @@ -0,0 +1,12 @@ +diff --git a/internal/qtls/BUILD.bazel b/internal/qtls/BUILD.bazel +index 0dd9af2..f500bc9 100644 +--- a/internal/qtls/BUILD.bazel ++++ b/internal/qtls/BUILD.bazel +@@ -12,7 +12,6 @@ go_library( + visibility = ["//:__subpackages__"], + deps = [ + "@com_github_quic_go_qtls_go1_19//:qtls-go1-19", +- "@com_github_quic_go_qtls_go1_20//:qtls-go1-20", + ], + ) + diff --git a/pkg/snet/squic/BUILD.bazel b/pkg/snet/squic/BUILD.bazel index d19c2c64af..b05803f897 100644 --- a/pkg/snet/squic/BUILD.bazel +++ b/pkg/snet/squic/BUILD.bazel @@ -9,7 +9,7 @@ go_library( "//pkg/log:go_default_library", "//pkg/private/serrors:go_default_library", "//pkg/snet:go_default_library", - "@com_github_lucas_clemente_quic_go//:go_default_library", + "@com_github_quic_go_quic_go//:go_default_library", ], ) @@ -23,7 +23,7 @@ go_test( "//pkg/proto/control_plane:go_default_library", "//pkg/proto/control_plane/mock_control_plane:go_default_library", "@com_github_golang_mock//gomock:go_default_library", - "@com_github_lucas_clemente_quic_go//:go_default_library", + "@com_github_quic_go_quic_go//:go_default_library", "@com_github_stretchr_testify//assert:go_default_library", "@com_github_stretchr_testify//require:go_default_library", "@org_golang_google_grpc//:go_default_library", diff --git a/pkg/snet/squic/net.go b/pkg/snet/squic/net.go index dc0d5f01c5..4152638de9 100644 --- a/pkg/snet/squic/net.go +++ b/pkg/snet/squic/net.go @@ -24,11 +24,10 @@ import ( "sync" "time" - "github.com/lucas-clemente/quic-go" + "github.com/quic-go/quic-go" "github.com/scionproto/scion/pkg/log" "github.com/scionproto/scion/pkg/private/serrors" - "github.com/scionproto/scion/pkg/snet" ) const ( @@ -48,14 +47,14 @@ const streamAcceptTimeout = 5 * time.Second // ConnListener wraps a quic.Listener as a net.Listener. type ConnListener struct { - quic.Listener + *quic.Listener ctx context.Context cancel func() } // NewConnListener constructs a new listener with the appropriate buffers set. -func NewConnListener(l quic.Listener) *ConnListener { +func NewConnListener(l *quic.Listener) *ConnListener { ctx, cancel := context.WithCancel(context.Background()) c := &ConnListener{ Listener: l, @@ -363,8 +362,6 @@ type ConnDialer struct { // fails due to a SERVER_BUSY error. Timers, number of attempts are EXPERIMENTAL // and subject to change. func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { - addressStr := computeAddressStr(dst) - if d.TLSConfig == nil { return nil, serrors.New("tls.Config not set") } @@ -379,7 +376,7 @@ func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { } var err error - session, err = quic.DialContext(ctx, d.Conn, dst, addressStr, tlsConfig, quicConfig) + session, err = quic.Dial(ctx, d.Conn, dst, tlsConfig, quicConfig) if err == nil { break } @@ -410,15 +407,6 @@ func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { } -// computeAddressStr returns a parseable version of the SCION address for use -// with QUIC SNI. -func computeAddressStr(address net.Addr) string { - if v, ok := address.(*snet.UDPAddr); ok { - return fmt.Sprintf("[%s,%s]:%d", v.IA, v.Host.IP, v.Host.Port) - } - return address.String() -} - // acceptedConn is a net.Conn wrapper for a QUIC stream. type acceptedConn struct { stream quic.Stream diff --git a/pkg/snet/squic/net_test.go b/pkg/snet/squic/net_test.go index 5c99a5d893..16d3553960 100644 --- a/pkg/snet/squic/net_test.go +++ b/pkg/snet/squic/net_test.go @@ -27,7 +27,7 @@ import ( "time" "github.com/golang/mock/gomock" - "github.com/lucas-clemente/quic-go" + "github.com/quic-go/quic-go" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc" diff --git a/private/app/appnet/BUILD.bazel b/private/app/appnet/BUILD.bazel index 68f7650183..6762e1fd67 100644 --- a/private/app/appnet/BUILD.bazel +++ b/private/app/appnet/BUILD.bazel @@ -23,7 +23,7 @@ go_library( "//private/env:go_default_library", "//private/svc:go_default_library", "//private/trust:go_default_library", - "@com_github_lucas_clemente_quic_go//:go_default_library", + "@com_github_quic_go_quic_go//:go_default_library", ], ) diff --git a/private/app/appnet/infraenv.go b/private/app/appnet/infraenv.go index c9fdd7646c..e693561798 100644 --- a/private/app/appnet/infraenv.go +++ b/private/app/appnet/infraenv.go @@ -31,7 +31,7 @@ import ( "net" "time" - "github.com/lucas-clemente/quic-go" + "github.com/quic-go/quic-go" "github.com/scionproto/scion/pkg/addr" "github.com/scionproto/scion/pkg/daemon" From 4b88ad20bfcc495efd7c0ef4acd21c0a00624d55 Mon Sep 17 00:00:00 2001 From: Dominik Roos Date: Fri, 1 Sep 2023 09:49:08 +0200 Subject: [PATCH 2/8] adapt-to-breaking-quic-go-change --- gateway/gateway.go | 4 +++- pkg/snet/squic/BUILD.bazel | 1 - pkg/snet/squic/net.go | 7 ++++--- pkg/snet/squic/net_test.go | 2 +- private/app/appnet/infraenv.go | 7 +++++-- scion-pki/certs/BUILD.bazel | 1 + scion-pki/certs/renew.go | 3 ++- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/gateway/gateway.go b/gateway/gateway.go index 0e111e7ba8..12505f208c 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -480,7 +480,9 @@ func (g *Gateway) Run(ctx context.Context) error { "local_addr", clientConn.LocalAddr()) quicClientDialer := &squic.ConnDialer{ - Conn: clientConn, + Transport: &quic.Transport{ + Conn: clientConn, + }, TLSConfig: ephemeralTLSConfig, } diff --git a/pkg/snet/squic/BUILD.bazel b/pkg/snet/squic/BUILD.bazel index b05803f897..74b1d3ca92 100644 --- a/pkg/snet/squic/BUILD.bazel +++ b/pkg/snet/squic/BUILD.bazel @@ -8,7 +8,6 @@ go_library( deps = [ "//pkg/log:go_default_library", "//pkg/private/serrors:go_default_library", - "//pkg/snet:go_default_library", "@com_github_quic_go_quic_go//:go_default_library", ], ) diff --git a/pkg/snet/squic/net.go b/pkg/snet/squic/net.go index 4152638de9..02ee1cf3b6 100644 --- a/pkg/snet/squic/net.go +++ b/pkg/snet/squic/net.go @@ -346,10 +346,10 @@ func (c *acceptingConn) Close() error { // ConnDialer dials a net.Conn over a QUIC stream. type ConnDialer struct { - // Conn is the connection to initiate QUIC Sessions on. It can be shared + // Conn is the transport to initiate QUIC Sessions on. It can be shared // between clients and servers, because QUIC connection IDs are used to // demux the packets. - Conn net.PacketConn + Transport *quic.Transport // TLSConfig is the client's TLS configuration for starting QUIC connections. TLSConfig *tls.Config // QUICConfig is the client's QUIC configuration. @@ -362,6 +362,7 @@ type ConnDialer struct { // fails due to a SERVER_BUSY error. Timers, number of attempts are EXPERIMENTAL // and subject to change. func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { + if d.TLSConfig == nil { return nil, serrors.New("tls.Config not set") } @@ -376,7 +377,7 @@ func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { } var err error - session, err = quic.Dial(ctx, d.Conn, dst, tlsConfig, quicConfig) + session, err = d.Transport.Dial(ctx, dst, tlsConfig, quicConfig) if err == nil { break } diff --git a/pkg/snet/squic/net_test.go b/pkg/snet/squic/net_test.go index 16d3553960..a75036503f 100644 --- a/pkg/snet/squic/net_test.go +++ b/pkg/snet/squic/net_test.go @@ -209,7 +209,7 @@ func netListener(t *testing.T) (net.Listener, *net.UDPConn) { func connDialer(t *testing.T) *squic.ConnDialer { return &squic.ConnDialer{ - Conn: newConn(t), + Transport: &quic.Transport{Conn: newConn(t)}, TLSConfig: tlsConfig(t), } } diff --git a/private/app/appnet/infraenv.go b/private/app/appnet/infraenv.go index e693561798..ba1cc5eafa 100644 --- a/private/app/appnet/infraenv.go +++ b/private/app/appnet/infraenv.go @@ -150,15 +150,18 @@ func (nc *NetworkConfig) QUICStack() (*QUICStack, error) { VerifyConnection: nc.QUIC.TLSVerifier.VerifyConnection, NextProtos: []string{"SCION"}, } + clientTransport := &quic.Transport{ + Conn: client, + } return &QUICStack{ Listener: squic.NewConnListener(listener), InsecureDialer: &squic.ConnDialer{ - Conn: client, + Transport: clientTransport, TLSConfig: insecureClientTLSConfig, }, Dialer: &squic.ConnDialer{ - Conn: client, + Transport: clientTransport, TLSConfig: clientTLSConfig, }, RedirectCloser: cancel, diff --git a/scion-pki/certs/BUILD.bazel b/scion-pki/certs/BUILD.bazel index 5c4d468060..21de49c53f 100644 --- a/scion-pki/certs/BUILD.bazel +++ b/scion-pki/certs/BUILD.bazel @@ -49,6 +49,7 @@ go_library( "//scion-pki/key:go_default_library", "@com_github_opentracing_opentracing_go//:go_default_library", "@com_github_pkg_errors//:go_default_library", + "@com_github_quic_go_quic_go//:go_default_library", "@com_github_spf13_cobra//:go_default_library", "@org_golang_google_grpc//resolver:go_default_library", "@org_golang_google_protobuf//proto:go_default_library", diff --git a/scion-pki/certs/renew.go b/scion-pki/certs/renew.go index eea541680f..16604ea660 100644 --- a/scion-pki/certs/renew.go +++ b/scion-pki/certs/renew.go @@ -27,6 +27,7 @@ import ( "strconv" "time" + "github.com/quic-go/quic-go" "github.com/spf13/cobra" "google.golang.org/grpc/resolver" "google.golang.org/protobuf/proto" @@ -770,7 +771,7 @@ func (r *renewer) requestRemote( SVCResolutionFraction: 1, }, Dialer: squic.ConnDialer{ - Conn: conn, + Transport: &quic.Transport{Conn: conn}, TLSConfig: &tls.Config{ InsecureSkipVerify: true, NextProtos: []string{"SCION"}, From 68cf45075715d38e3546d4031f0d58d71a4f81ff Mon Sep 17 00:00:00 2001 From: Dominik Roos Date: Fri, 1 Sep 2023 11:47:42 +0200 Subject: [PATCH 3/8] set-tls-servername --- pkg/snet/squic/BUILD.bazel | 1 + pkg/snet/squic/net.go | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/pkg/snet/squic/BUILD.bazel b/pkg/snet/squic/BUILD.bazel index 74b1d3ca92..b05803f897 100644 --- a/pkg/snet/squic/BUILD.bazel +++ b/pkg/snet/squic/BUILD.bazel @@ -8,6 +8,7 @@ go_library( deps = [ "//pkg/log:go_default_library", "//pkg/private/serrors:go_default_library", + "//pkg/snet:go_default_library", "@com_github_quic_go_quic_go//:go_default_library", ], ) diff --git a/pkg/snet/squic/net.go b/pkg/snet/squic/net.go index 02ee1cf3b6..b070a0545a 100644 --- a/pkg/snet/squic/net.go +++ b/pkg/snet/squic/net.go @@ -28,6 +28,7 @@ import ( "github.com/scionproto/scion/pkg/log" "github.com/scionproto/scion/pkg/private/serrors" + "github.com/scionproto/scion/pkg/snet" ) const ( @@ -362,6 +363,7 @@ type ConnDialer struct { // fails due to a SERVER_BUSY error. Timers, number of attempts are EXPERIMENTAL // and subject to change. func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { + addressStr := computeAddressStr(dst) if d.TLSConfig == nil { return nil, serrors.New("tls.Config not set") @@ -370,6 +372,7 @@ func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { for sleep := 2 * time.Millisecond; ctx.Err() == nil; sleep = sleep * 2 { // Clone TLS config to avoid data races. tlsConfig := d.TLSConfig.Clone() + tlsConfig.ServerName = addressStr // Clone QUIC config to avoid data races, if it exists. var quicConfig *quic.Config if d.QUICConfig != nil { @@ -408,6 +411,15 @@ func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { } +// computeAddressStr returns a parseable version of the SCION address for use +// with QUIC SNI. +func computeAddressStr(address net.Addr) string { + if v, ok := address.(*snet.UDPAddr); ok { + return fmt.Sprintf("[%s,%s]:%d", v.IA, v.Host.IP, v.Host.Port) + } + return address.String() +} + // acceptedConn is a net.Conn wrapper for a QUIC stream. type acceptedConn struct { stream quic.Stream From e5a73b77165188b286b6cc5c76108379693592d8 Mon Sep 17 00:00:00 2001 From: Dominik Roos Date: Fri, 1 Sep 2023 14:06:00 +0200 Subject: [PATCH 4/8] dropportfromservername --- pkg/snet/squic/net.go | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/pkg/snet/squic/net.go b/pkg/snet/squic/net.go index b070a0545a..29a8c7910e 100644 --- a/pkg/snet/squic/net.go +++ b/pkg/snet/squic/net.go @@ -363,16 +363,19 @@ type ConnDialer struct { // fails due to a SERVER_BUSY error. Timers, number of attempts are EXPERIMENTAL // and subject to change. func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { - addressStr := computeAddressStr(dst) - if d.TLSConfig == nil { return nil, serrors.New("tls.Config not set") } + serverName := d.TLSConfig.ServerName + if serverName == "" { + serverName = computeServerName(dst) + } + var session quic.Connection for sleep := 2 * time.Millisecond; ctx.Err() == nil; sleep = sleep * 2 { // Clone TLS config to avoid data races. tlsConfig := d.TLSConfig.Clone() - tlsConfig.ServerName = addressStr + tlsConfig.ServerName = serverName // Clone QUIC config to avoid data races, if it exists. var quicConfig *quic.Config if d.QUICConfig != nil { @@ -411,13 +414,21 @@ func (d ConnDialer) Dial(ctx context.Context, dst net.Addr) (net.Conn, error) { } -// computeAddressStr returns a parseable version of the SCION address for use +// computeServerName returns a parseable version of the SCION address for use // with QUIC SNI. -func computeAddressStr(address net.Addr) string { +func computeServerName(address net.Addr) string { + // XXX(roosd): Special case snet.UDPAddr because its string encoding is not + // processable by net.SplitHostPort. if v, ok := address.(*snet.UDPAddr); ok { - return fmt.Sprintf("[%s,%s]:%d", v.IA, v.Host.IP, v.Host.Port) + return fmt.Sprintf("%s,%s", v.IA, v.Host.IP) + } + host := address.String() + sni, _, err := net.SplitHostPort(host) + if err != nil { + // It's ok if net.SplitHostPort returns an error - it could be a hostname/IP address without a port. + sni = host } - return address.String() + return sni } // acceptedConn is a net.Conn wrapper for a QUIC stream. From a107684a057fe2421f86f0782e22bf476d3b951e Mon Sep 17 00:00:00 2001 From: Dominik Roos Date: Fri, 1 Sep 2023 14:06:59 +0200 Subject: [PATCH 5/8] licenses --- .../LICENSE | 27 ------------------- .../LICENSE | 0 .../LICENSE | 0 licenses/data/org_golang_x_sys/LICENSE | 0 4 files changed, 27 deletions(-) delete mode 100644 licenses/data/com_github_marten_seemann_qtls_go1_19/LICENSE rename licenses/data/{com_github_marten_seemann_qtls_go1_18 => com_github_quic_go_qtls_go1_19}/LICENSE (100%) rename licenses/data/{com_github_lucas_clemente_quic_go => com_github_quic_go_quic_go}/LICENSE (100%) mode change 100755 => 100644 licenses/data/org_golang_x_sys/LICENSE diff --git a/licenses/data/com_github_marten_seemann_qtls_go1_19/LICENSE b/licenses/data/com_github_marten_seemann_qtls_go1_19/LICENSE deleted file mode 100644 index 6a66aea5ea..0000000000 --- a/licenses/data/com_github_marten_seemann_qtls_go1_19/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/data/com_github_marten_seemann_qtls_go1_18/LICENSE b/licenses/data/com_github_quic_go_qtls_go1_19/LICENSE similarity index 100% rename from licenses/data/com_github_marten_seemann_qtls_go1_18/LICENSE rename to licenses/data/com_github_quic_go_qtls_go1_19/LICENSE diff --git a/licenses/data/com_github_lucas_clemente_quic_go/LICENSE b/licenses/data/com_github_quic_go_quic_go/LICENSE similarity index 100% rename from licenses/data/com_github_lucas_clemente_quic_go/LICENSE rename to licenses/data/com_github_quic_go_quic_go/LICENSE diff --git a/licenses/data/org_golang_x_sys/LICENSE b/licenses/data/org_golang_x_sys/LICENSE old mode 100755 new mode 100644 From a0476395b51d08f41f6a67d7d7fb29769c01e558 Mon Sep 17 00:00:00 2001 From: Dominik Roos Date: Fri, 1 Sep 2023 14:38:53 +0200 Subject: [PATCH 6/8] lll-:grumble: --- pkg/snet/squic/net.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/snet/squic/net.go b/pkg/snet/squic/net.go index 29a8c7910e..6018f9f99d 100644 --- a/pkg/snet/squic/net.go +++ b/pkg/snet/squic/net.go @@ -425,7 +425,8 @@ func computeServerName(address net.Addr) string { host := address.String() sni, _, err := net.SplitHostPort(host) if err != nil { - // It's ok if net.SplitHostPort returns an error - it could be a hostname/IP address without a port. + // It's ok if net.SplitHostPort returns an error. it could be a + // hostname/IP address without a port. sni = host } return sni From 0a0b46fec932dd7c863d6c9898098fcde7d13822 Mon Sep 17 00:00:00 2001 From: Dominik Roos Date: Wed, 6 Sep 2023 14:59:53 +0200 Subject: [PATCH 7/8] introduce propagation stopper --- gateway/gateway.go | 50 ++++++++++++++++++++-------------- pkg/snet/dispatcher.go | 21 ++++++++++++++ pkg/snet/squic/net.go | 6 ++++ private/app/appnet/infraenv.go | 9 ++++-- scion-pki/certs/renew.go | 7 +++-- 5 files changed, 68 insertions(+), 25 deletions(-) diff --git a/gateway/gateway.go b/gateway/gateway.go index 12505f208c..7f6693b534 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -448,17 +448,21 @@ func (g *Gateway) Run(ctx context.Context) error { return serrors.WrapStr("unable to generate TLS config", err) } - // scionNetwork is the network for all SCION connections, with the exception of the QUIC server - // connection. - scionNetwork := &snet.SCIONNetwork{ + // scionNetworkNoSCMP is the network for the QUIC server connection. Because SCMP errors + // will cause the server's accepts to fail, we ignore SCMP. + scionNetworkNoSCMP := &snet.SCIONNetwork{ LocalIA: localIA, Dispatcher: &snet.DefaultPacketDispatcherService{ // Enable transparent reconnections to the dispatcher Dispatcher: reconnectingDispatcher, - // Forward revocations to Daemon - SCMPHandler: snet.DefaultSCMPHandler{ - RevocationHandler: revocationHandler, - SCMPErrors: g.Metrics.SCMPErrors, + // Discard all SCMP propagation, to avoid accept/read errors on the + // QUIC server/client. + SCMPHandler: snet.SCMPPropagationStopper{ + Handler: snet.DefaultSCMPHandler{ + RevocationHandler: revocationHandler, + SCMPErrors: g.Metrics.SCMPErrors, + }, + Log: log.FromCtx(ctx).Debug, }, SCIONPacketConnMetrics: g.Metrics.SCIONPacketConnMetrics, }, @@ -467,7 +471,7 @@ func (g *Gateway) Run(ctx context.Context) error { // Initialize the UDP/SCION QUIC conn for outgoing Gateway Discovery RPCs and outgoing Prefix // Fetching. Open up a random high port for this. - clientConn, err := scionNetwork.Listen( + clientConn, err := scionNetworkNoSCMP.Listen( context.TODO(), "udp", &net.UDPAddr{IP: g.ControlClientIP}, @@ -511,6 +515,23 @@ func (g *Gateway) Run(ctx context.Context) error { "remote_isd_as", ia.String()) } } + + // scionNetwork is the network for all SCION connections, with the exception of the QUIC server + // and client connection. + scionNetwork := &snet.SCIONNetwork{ + LocalIA: localIA, + Dispatcher: &snet.DefaultPacketDispatcherService{ + // Enable transparent reconnections to the dispatcher + Dispatcher: reconnectingDispatcher, + // Forward revocations to Daemon + SCMPHandler: snet.DefaultSCMPHandler{ + RevocationHandler: revocationHandler, + SCMPErrors: g.Metrics.SCMPErrors, + }, + SCIONPacketConnMetrics: g.Metrics.SCIONPacketConnMetrics, + }, + Metrics: g.Metrics.SCIONNetworkMetrics, + } remoteMonitor := &control.RemoteMonitor{ IAs: remoteIAsChannel, RemotesMonitored: rmMetric, @@ -550,19 +571,6 @@ func (g *Gateway) Run(ctx context.Context) error { }() logger.Debug("Remote monitor started.") - // scionNetworkNoSCMP is the network for the QUIC server connection. Because SCMP errors - // will cause the server's accepts to fail, we ignore SCMP. - scionNetworkNoSCMP := &snet.SCIONNetwork{ - LocalIA: localIA, - Dispatcher: &snet.DefaultPacketDispatcherService{ - // Enable transparent reconnections to the dispatcher - Dispatcher: reconnectingDispatcher, - // Discard all SCMP, to avoid accept errors on the QUIC server. - SCMPHandler: ignoreSCMP{}, - SCIONPacketConnMetrics: g.Metrics.SCIONPacketConnMetrics, - }, - Metrics: g.Metrics.SCIONNetworkMetrics, - } serverConn, err := scionNetworkNoSCMP.Listen( context.TODO(), "udp", diff --git a/pkg/snet/dispatcher.go b/pkg/snet/dispatcher.go index bfc1180a09..99fb8cde08 100644 --- a/pkg/snet/dispatcher.go +++ b/pkg/snet/dispatcher.go @@ -143,3 +143,24 @@ func (h *DefaultSCMPHandler) handleSCMPRev(typeCode slayers.SCMPTypeCode, } return &OpError{typeCode: typeCode, revInfo: revInfo} } + +// SCMPPropagationStopper wraps an SCMP handler and stops propagation of the +// SCMP errors up the stack. This can be necessary if the client code aborts on +// unexpected errors. This is a temporary solution until we address +// https://github.com/scionproto/scion/issues/4389. +// +// EXPERIMENTAL: This handler is experimental and may be removed in the future. +type SCMPPropagationStopper struct { + // Handler is the wrapped handler. + Handler SCMPHandler + // Log is an optional function that is called when the wrapped handler + // returns an error and propagation is stopped. + Log func(msg string, ctx ...any) +} + +func (h SCMPPropagationStopper) Handle(pkt *Packet) error { + if err := h.Handler.Handle(pkt); err != nil && h.Log != nil { + h.Log("Stopped SCMP error propagation", "err", err) + } + return nil +} diff --git a/pkg/snet/squic/net.go b/pkg/snet/squic/net.go index 6018f9f99d..e20d21e45e 100644 --- a/pkg/snet/squic/net.go +++ b/pkg/snet/squic/net.go @@ -350,6 +350,12 @@ type ConnDialer struct { // Conn is the transport to initiate QUIC Sessions on. It can be shared // between clients and servers, because QUIC connection IDs are used to // demux the packets. + // + // Note: When creating the transport, ensure that the SCMP errors are not + // propagated. You can for example use + // [github.com/scionproto/scion/pkg/snet.SCMPPropagationStopper]. Otherwise, + // the QUIC transport will close the listening side on SCMP errors and enter + // a broken state. Transport *quic.Transport // TLSConfig is the client's TLS configuration for starting QUIC connections. TLSConfig *tls.Config diff --git a/private/app/appnet/infraenv.go b/private/app/appnet/infraenv.go index ba1cc5eafa..e1f73c73c2 100644 --- a/private/app/appnet/infraenv.go +++ b/private/app/appnet/infraenv.go @@ -339,8 +339,13 @@ func (nc *NetworkConfig) initQUICSockets() (net.PacketConn, net.PacketConn, erro clientNet := &snet.SCIONNetwork{ LocalIA: nc.IA, Dispatcher: &snet.DefaultPacketDispatcherService{ - Dispatcher: dispatcherService, - SCMPHandler: nc.SCMPHandler, + Dispatcher: dispatcherService, + // Discard all SCMP propagation, to avoid read errors on the QUIC + // client. + SCMPHandler: snet.SCMPPropagationStopper{ + Handler: nc.SCMPHandler, + Log: log.Debug, + }, SCIONPacketConnMetrics: nc.SCIONPacketConnMetrics, }, Metrics: nc.SCIONNetworkMetrics, diff --git a/scion-pki/certs/renew.go b/scion-pki/certs/renew.go index 16604ea660..4bb546a182 100644 --- a/scion-pki/certs/renew.go +++ b/scion-pki/certs/renew.go @@ -745,8 +745,11 @@ func (r *renewer) requestRemote( LocalIA: local.IA, Dispatcher: &snet.DefaultPacketDispatcherService{ Dispatcher: reliable.NewDispatcher(r.Disatcher), - SCMPHandler: snet.DefaultSCMPHandler{ - RevocationHandler: daemon.RevHandler{Connector: r.Daemon}, + SCMPHandler: snet.SCMPPropagationStopper{ + Handler: snet.DefaultSCMPHandler{ + RevocationHandler: daemon.RevHandler{Connector: r.Daemon}, + }, + Log: log.FromCtx(ctx).Debug, }, }, } From 9e06b8ee34c0a0ac5511de873168c3d7f6b67696 Mon Sep 17 00:00:00 2001 From: Dominik Roos Date: Wed, 6 Sep 2023 18:11:59 +0200 Subject: [PATCH 8/8] lint --- gateway/gateway.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/gateway/gateway.go b/gateway/gateway.go index 7f6693b534..d2060b8de1 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -140,16 +140,6 @@ func (rtf RoutingTableFactory) New( return dataplane.NewRoutingTable(routingChains), nil } -// ignoreSCMP ignores all received SCMP packets. -// -// XXX(scrye): This is needed such that the QUIC server does not shut down when -// receiving a SCMP error. DO NOT REMOVE! -type ignoreSCMP struct{} - -func (ignoreSCMP) Handle(pkt *snet.Packet) error { - return nil -} - // SelectAdvertisedRoutes computes the networks that should be advertised // depending on the state of the last published routing policy file. type SelectAdvertisedRoutes struct {