Skip to content

Commit 77a7d90

Browse files
authored
Use quic.Transport instead of quic shortcuts and bump quic version to… (#1005)
1 parent dd4efd9 commit 77a7d90

File tree

5 files changed

+38
-18
lines changed

5 files changed

+38
-18
lines changed

.github/workflows/pull_request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
strategy:
4242
fail-fast: false
4343
matrix:
44-
go-version: ["1.20"]
44+
go-version: ["1.20", "1.21"]
4545
steps:
4646
- name: Checkout
4747
uses: actions/checkout@v4

go.mod

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/ansible/receptor
22

3-
go 1.20
3+
go 1.21
44

55
require (
66
github.com/creack/pty v1.1.21
@@ -15,7 +15,7 @@ require (
1515
github.com/minio/highwayhash v1.0.2
1616
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58
1717
github.com/prep/socketpair v0.0.0-20171228153254-c2c6a7f821c2
18-
github.com/quic-go/quic-go v0.34.0
18+
github.com/quic-go/quic-go v0.40.1
1919
github.com/rogpeppe/go-internal v1.12.0
2020
github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8
2121
github.com/vishvananda/netlink v1.1.0
@@ -52,8 +52,7 @@ require (
5252
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
5353
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
5454
github.com/onsi/ginkgo/v2 v2.13.2 // indirect
55-
github.com/quic-go/qtls-go1-19 v0.3.2 // indirect
56-
github.com/quic-go/qtls-go1-20 v0.2.2 // indirect
55+
github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
5756
github.com/spf13/pflag v1.0.5 // indirect
5857
github.com/vishvananda/netns v0.0.4 // indirect
5958
golang.org/x/crypto v0.22.0 // indirect

go.sum

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
2+
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
23
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
34
github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
45
github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
@@ -8,6 +9,7 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
89
github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
910
github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
1011
github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84=
12+
github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
1113
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
1214
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
1315
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
@@ -62,6 +64,7 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI
6264
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
6365
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
6466
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
67+
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
6568
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
6669
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
6770
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -84,19 +87,19 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+
8487
github.com/onsi/ginkgo/v2 v2.13.2 h1:Bi2gGVkfn6gQcjNjZJVO8Gf0FHzMPf2phUei9tejVMs=
8588
github.com/onsi/ginkgo/v2 v2.13.2/go.mod h1:XStQ8QcGwLyF4HdfcZB8SFOS/MWCgDuXMSBe6zrvLgM=
8689
github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
90+
github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
8791
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0=
8892
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y=
8993
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
94+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
9095
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
9196
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
9297
github.com/prep/socketpair v0.0.0-20171228153254-c2c6a7f821c2 h1:vzKDZ0uNPcOdITzZT5d4Tn2YOalCMqIhYzVNq/oRjlw=
9398
github.com/prep/socketpair v0.0.0-20171228153254-c2c6a7f821c2/go.mod h1:E/IaW35yb7xPACTLciISfz5w+jqPwmnXwDdmilSl/Nc=
94-
github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc86Z5U=
95-
github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI=
96-
github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E=
97-
github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM=
98-
github.com/quic-go/quic-go v0.34.0 h1:OvOJ9LFjTySgwOTYUZmNoq0FzVicP8YujpV0kB7m2lU=
99-
github.com/quic-go/quic-go v0.34.0/go.mod h1:+4CVgVppm0FNjpG3UcX8Joi/frKOH7/ciD5yGcwOO1g=
99+
github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs=
100+
github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k=
101+
github.com/quic-go/quic-go v0.40.1 h1:X3AGzUNFs0jVuO3esAGnTfvdgvL4fq655WaOi1snv1Q=
102+
github.com/quic-go/quic-go v0.40.1/go.mod h1:PeN7kuVJ4xZbxSv/4OX6S1USOX8MJvydwpTx31vx60c=
100103
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
101104
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
102105
github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 h1:TG/diQgUe0pntT/2D9tmUCz4VNwm9MfrtPr0SU2qSX8=
@@ -112,6 +115,7 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
112115
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
113116
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
114117
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
118+
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
115119
github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0=
116120
github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
117121
github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=

packaging/container/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FROM quay.io/centos/centos:stream9 as builder
22
ARG VERSION
33

4-
RUN dnf -y update && dnf install -y 'golang < 1.21' make python3 python3-pip git
4+
RUN dnf -y update && dnf install -y golang make python3 python3-pip git
55
RUN pip install wheel
66

77
ADD source.tar.gz /source

pkg/netceptor/conn.go

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ type acceptResult struct {
3737
type Listener struct {
3838
s *Netceptor
3939
pc PacketConner
40-
ql quic.Listener
40+
ql *quic.Listener
4141
acceptChan chan *acceptResult
4242
doneChan chan struct{}
4343
doneOnce *sync.Once
@@ -90,10 +90,19 @@ func (s *Netceptor) listen(ctx context.Context, service string, tlscfg *tls.Conf
9090
s.Logger.Debug("%s added service %s to listener registry", s.nodeID, service)
9191
s.listenerRegistry[service] = pc
9292
cfg := &quic.Config{
93-
MaxIdleTimeout: MaxIdleTimeoutForQuicConnections,
93+
HandshakeIdleTimeout: 15 * time.Second,
94+
MaxIdleTimeout: MaxIdleTimeoutForQuicConnections,
95+
Allow0RTT: true,
96+
DisablePathMTUDiscovery: false,
97+
}
98+
statelessResetKey := make([]byte, 32)
99+
rand.Read(statelessResetKey)
100+
tr := quic.Transport{
101+
Conn: pc,
102+
StatelessResetKey: (*quic.StatelessResetKey)(statelessResetKey),
94103
}
95104
_ = os.Setenv("QUIC_GO_DISABLE_RECEIVE_BUFFER_WARNING", "1")
96-
ql, err := quic.Listen(pc, tlscfg, cfg)
105+
ql, err := tr.Listen(tlscfg, cfg)
97106
if err != nil {
98107
return nil, err
99108
}
@@ -285,8 +294,10 @@ func (s *Netceptor) DialContext(ctx context.Context, node string, service string
285294
}
286295
rAddr := s.NewAddr(node, service)
287296
cfg := &quic.Config{
288-
HandshakeIdleTimeout: 15 * time.Second,
289-
MaxIdleTimeout: MaxIdleTimeoutForQuicConnections,
297+
HandshakeIdleTimeout: 15 * time.Second,
298+
MaxIdleTimeout: MaxIdleTimeoutForQuicConnections,
299+
Allow0RTT: true,
300+
DisablePathMTUDiscovery: false,
290301
}
291302

292303
if KeepAliveForQuicConnections {
@@ -320,7 +331,13 @@ func (s *Netceptor) DialContext(ctx context.Context, node string, service string
320331
doneChan := make(chan struct{}, 1)
321332
go monitorUnreachable(pc, doneChan, rAddr, ccancel)
322333
_ = os.Setenv("QUIC_GO_DISABLE_RECEIVE_BUFFER_WARNING", "1")
323-
qc, err := quic.DialContext(cctx, pc, rAddr, s.nodeID, tlscfg, cfg)
334+
statelessResetKey := make([]byte, 32)
335+
rand.Read(statelessResetKey)
336+
tr := quic.Transport{
337+
Conn: pc,
338+
StatelessResetKey: (*quic.StatelessResetKey)(statelessResetKey),
339+
}
340+
qc, err := tr.Dial(cctx, rAddr, tlscfg, cfg)
324341
if err != nil {
325342
close(okChan)
326343
pcClose()

0 commit comments

Comments
 (0)