Skip to content

Commit 790ff93

Browse files
committed
merge master
2 parents 0b46ec6 + 50d714c commit 790ff93

65 files changed

Lines changed: 2038 additions & 937 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/generated-pr.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: Close Generated PRs
2+
3+
on:
4+
schedule:
5+
- cron: '0 0 * * *'
6+
workflow_dispatch:
7+
8+
permissions:
9+
issues: write
10+
pull-requests: write
11+
12+
jobs:
13+
stale:
14+
uses: ipdxco/unified-github-workflows/.github/workflows/reusable-generated-pr.yml@v1

.github/workflows/go-check.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,42 @@ jobs:
1919
with:
2020
go-version: "1.24.x"
2121
go-generate-ignore-protoc-version-comments: true
22+
23+
golangci-lint:
24+
runs-on: ubuntu-latest
25+
strategy:
26+
fail-fast: false
27+
matrix:
28+
go: [ "1.23.x", "1.24.x" ]
29+
env:
30+
GOLANGCI_LINT_VERSION: v2.0.2
31+
name: golangci-lint (Go ${{ matrix.go }})
32+
steps:
33+
- uses: actions/checkout@v4
34+
- uses: actions/setup-go@v5
35+
with:
36+
go-version: ${{ matrix.go }}
37+
- name: golangci-lint (Linux)
38+
uses: golangci/golangci-lint-action@v7
39+
with:
40+
args: --timeout=5m
41+
version: ${{ env.GOLANGCI_LINT_VERSION }}
42+
only-new-issues: true
43+
- name: golangci-lint (Windows)
44+
if: success() || failure() # run this step even if the previous one failed
45+
uses: golangci/golangci-lint-action@v7
46+
env:
47+
GOOS: "windows"
48+
with:
49+
args: --timeout=5m
50+
version: ${{ env.GOLANGCI_LINT_VERSION }}
51+
only-new-issues: true
52+
- name: golangci-lint (OSX)
53+
if: success() || failure() # run this step even if the previous one failed
54+
uses: golangci/golangci-lint-action@v7
55+
env:
56+
GOOS: "darwin"
57+
with:
58+
args: --timeout=5m
59+
version: ${{ env.GOLANGCI_LINT_VERSION }}
60+
only-new-issues: true

.github/workflows/stale.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
name: Close and mark stale issue
1+
name: Close Stale Issues
22

33
on:
44
schedule:
55
- cron: '0 0 * * *'
6+
workflow_dispatch:
67

78
permissions:
89
issues: write
910
pull-requests: write
1011

1112
jobs:
1213
stale:
13-
uses: pl-strflt/.github/.github/workflows/reusable-stale-issue.yml@v0.3
14+
uses: ipdxco/unified-github-workflows/.github/workflows/reusable-stale-issue.yml@v1

.golangci.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
version: "2"
2+
3+
run:
4+
timeout: 5m
5+
6+
linters:
7+
enable:
8+
- revive
9+
- unused
10+
- prealloc
11+
12+
settings:
13+
revive:
14+
severity: warning
15+
rules:
16+
- name: unused-parameter
17+
severity: warning
18+
19+
severity:
20+
default: warning
21+

config/config.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,11 +293,11 @@ func (cfg *Config) addTransports() ([]fx.Option, error) {
293293
fx.Provide(func() connmgr.ConnectionGater { return cfg.ConnectionGater }),
294294
fx.Provide(func() pnet.PSK { return cfg.PSK }),
295295
fx.Provide(func() network.ResourceManager { return cfg.ResourceManager }),
296-
fx.Provide(func(gater connmgr.ConnectionGater, rcmgr network.ResourceManager) *tcpreuse.ConnMgr {
296+
fx.Provide(func(upgrader transport.Upgrader) *tcpreuse.ConnMgr {
297297
if !cfg.ShareTCPListener {
298298
return nil
299299
}
300-
return tcpreuse.NewConnMgr(tcpreuse.EnvReuseportVal, gater, rcmgr)
300+
return tcpreuse.NewConnMgr(tcpreuse.EnvReuseportVal, upgrader)
301301
}),
302302
fx.Provide(func(cm *quicreuse.ConnManager, sw *swarm.Swarm) libp2pwebrtc.ListenUDPFn {
303303
hasQuicAddrPortFor := func(network string, laddr *net.UDPAddr) bool {

core/transport/transport.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,41 @@ type TransportNetwork interface {
129129
AddTransport(t Transport) error
130130
}
131131

132+
// GatedMaListener is listener that listens for raw(unsecured and non-multiplexed) incoming connections,
133+
// gates them with a `connmgr.ConnGater`and creates a resource management scope for them.
134+
// It can be upgraded to a full libp2p transport listener by the Upgrader.
135+
//
136+
// Compared to manet.Listener, this listener creates the resource management scope for the accepted connection.
137+
type GatedMaListener interface {
138+
// Accept waits for and returns the next connection to the listener.
139+
Accept() (manet.Conn, network.ConnManagementScope, error)
140+
141+
// Close closes the listener.
142+
// Any blocked Accept operations will be unblocked and return errors.
143+
Close() error
144+
145+
// Multiaddr returns the listener's (local) Multiaddr.
146+
Multiaddr() ma.Multiaddr
147+
148+
// Addr returns the net.Listener's network address.
149+
Addr() net.Addr
150+
}
151+
132152
// Upgrader is a multistream upgrader that can upgrade an underlying connection
133153
// to a full transport connection (secure and multiplexed).
134154
type Upgrader interface {
135155
// UpgradeListener upgrades the passed multiaddr-net listener into a full libp2p-transport listener.
156+
//
157+
// Deprecated: Use UpgradeGatedMaListener(upgrader.GateMaListener(manet.Listener)) instead.
136158
UpgradeListener(Transport, manet.Listener) Listener
159+
160+
// GateMaListener creates a GatedMaListener from a manet.Listener. It gates the accepted connection
161+
// and creates a resource scope for it.
162+
GateMaListener(manet.Listener) GatedMaListener
163+
164+
// UpgradeGatedMaListener upgrades the passed GatedMaListener into a full libp2p-transport listener.
165+
UpgradeGatedMaListener(Transport, GatedMaListener) Listener
166+
137167
// Upgrade upgrades the multiaddr/net connection into a full libp2p-transport connection.
138168
Upgrade(ctx context.Context, t Transport, maconn manet.Conn, dir network.Direction, p peer.ID, scope network.ConnManagementScope) (CapableConn, error)
139169
}

examples/autotls/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# libp2p host with Secure WebSockets and AutoTLS
22

3-
This example builds on the [libp2p host example](../libp2p-host) example and demonstrates how to use [AutoTLS](https://blog.ipfs.tech/2024-shipyard-improving-ipfs-on-the-web/#autotls-with-libp2p-direct) to automatically generate a wildcard Let's Encrypt TLS certificate unique to the libp2p host (`*.<PeerID>.libp2p.direct`), and use it with [libp2p WebSockets transport over TCP](https://github.com/libp2p/specs/blob/master/websockets/README.md) enabling browsers to directly connect to the libp2p host.
3+
This example builds on the [libp2p host example](../libp2p-host) example and demonstrates how to use [AutoTLS](https://blog.libp2p.io/autotls/) to automatically generate a wildcard Let's Encrypt TLS certificate unique to the libp2p host (`*.<PeerID>.libp2p.direct`), and use it with [libp2p WebSockets transport over TCP](https://github.com/libp2p/specs/blob/master/websockets/README.md) enabling browsers to directly connect to the libp2p host.
44

55
For this example to work, you need to have a public IP address and be publicly reachable. AutoTLS is guarded by connectivity check, and will not ask for a certificate unless your libp2p node emits `event.EvtLocalReachabilityChanged` with `network.ReachabilityPublic`.
66

examples/autotls/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ func main() {
5858
// User-Agent to use during DNS-01 ACME challenge
5959
p2pforge.WithUserAgent(userAgent),
6060

61+
// Optional extra delay before the initial registration
62+
p2pforge.WithRegistrationDelay(10*time.Second),
63+
6164
// Optional hook called once certificate is ready
6265
p2pforge.WithOnCertLoaded(func() {
6366
certLoaded <- true
@@ -130,9 +133,6 @@ func main() {
130133

131134
go dht.Bootstrap(ctx)
132135

133-
// Wait for peers to verify public address with AutoNAT
134-
time.Sleep(5 * time.Second)
135-
136136
logger.Info("Addresses: ", h.Addrs())
137137

138138
certManager.ProvideHost(h)

examples/go.mod

Lines changed: 35 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
module github.com/libp2p/go-libp2p/examples
22

3-
go 1.23
3+
go 1.23.0
44

55
require (
66
github.com/caddyserver/certmagic v0.21.6
77
github.com/gogo/protobuf v1.3.2
88
github.com/google/uuid v1.6.0
99
github.com/ipfs/go-datastore v0.6.0
1010
github.com/ipfs/go-log/v2 v2.5.1
11-
github.com/ipshipyard/p2p-forge v0.3.1
12-
github.com/libp2p/go-libp2p v0.38.2
11+
github.com/ipshipyard/p2p-forge v0.5.0
12+
github.com/libp2p/go-libp2p v0.41.1
1313
github.com/libp2p/go-libp2p-kad-dht v0.28.1
14-
github.com/multiformats/go-multiaddr v0.14.0
15-
github.com/prometheus/client_golang v1.20.5
14+
github.com/multiformats/go-multiaddr v0.15.0
15+
github.com/prometheus/client_golang v1.21.1
1616
)
1717

1818
require (
@@ -24,7 +24,7 @@ require (
2424
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
2525
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
2626
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
27-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
27+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect
2828
github.com/docker/go-units v0.5.0 // indirect
2929
github.com/elastic/gosigar v0.14.3 // indirect
3030
github.com/flynn/noise v1.1.0 // indirect
@@ -35,20 +35,20 @@ require (
3535
github.com/godbus/dbus/v5 v5.1.0 // indirect
3636
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
3737
github.com/google/gopacket v1.1.19 // indirect
38-
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
38+
github.com/google/pprof v0.0.0-20250208200701-d0013a598941 // indirect
3939
github.com/gorilla/websocket v1.5.3 // indirect
4040
github.com/hashicorp/errwrap v1.1.0 // indirect
4141
github.com/hashicorp/go-multierror v1.1.1 // indirect
4242
github.com/hashicorp/golang-lru v1.0.2 // indirect
4343
github.com/huin/goupnp v1.3.0 // indirect
4444
github.com/ipfs/boxo v0.25.0 // indirect
45-
github.com/ipfs/go-cid v0.4.1 // indirect
45+
github.com/ipfs/go-cid v0.5.0 // indirect
4646
github.com/ipld/go-ipld-prime v0.21.0 // indirect
4747
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
4848
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
4949
github.com/jbenet/goprocess v0.1.4 // indirect
50-
github.com/klauspost/compress v1.17.11 // indirect
51-
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
50+
github.com/klauspost/compress v1.18.0 // indirect
51+
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
5252
github.com/koron/go-ssdp v0.0.5 // indirect
5353
github.com/libdns/libdns v0.2.2 // indirect
5454
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
@@ -59,15 +59,14 @@ require (
5959
github.com/libp2p/go-libp2p-record v0.2.0 // indirect
6060
github.com/libp2p/go-libp2p-routing-helpers v0.7.4 // indirect
6161
github.com/libp2p/go-msgio v0.3.0 // indirect
62-
github.com/libp2p/go-nat v0.2.0 // indirect
6362
github.com/libp2p/go-netroute v0.2.2 // indirect
6463
github.com/libp2p/go-reuseport v0.4.0 // indirect
65-
github.com/libp2p/go-yamux/v4 v4.0.1 // indirect
64+
github.com/libp2p/go-yamux/v5 v5.0.0 // indirect
6665
github.com/libp2p/zeroconf/v2 v2.2.0 // indirect
6766
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
6867
github.com/mattn/go-isatty v0.0.20 // indirect
6968
github.com/mholt/acmez/v3 v3.0.0 // indirect
70-
github.com/miekg/dns v1.1.62 // indirect
69+
github.com/miekg/dns v1.1.64 // indirect
7170
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
7271
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
7372
github.com/minio/sha256-simd v1.0.1 // indirect
@@ -87,33 +86,33 @@ require (
8786
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
8887
github.com/pion/datachannel v1.5.10 // indirect
8988
github.com/pion/dtls/v2 v2.2.12 // indirect
90-
github.com/pion/ice/v2 v2.3.37 // indirect
89+
github.com/pion/dtls/v3 v3.0.4 // indirect
90+
github.com/pion/ice/v4 v4.0.8 // indirect
9191
github.com/pion/interceptor v0.1.37 // indirect
92-
github.com/pion/logging v0.2.2 // indirect
93-
github.com/pion/mdns v0.0.12 // indirect
92+
github.com/pion/logging v0.2.3 // indirect
93+
github.com/pion/mdns/v2 v2.0.7 // indirect
9494
github.com/pion/randutil v0.1.0 // indirect
9595
github.com/pion/rtcp v1.2.15 // indirect
96-
github.com/pion/rtp v1.8.10 // indirect
97-
github.com/pion/sctp v1.8.35 // indirect
98-
github.com/pion/sdp/v3 v3.0.9 // indirect
99-
github.com/pion/srtp/v2 v2.0.20 // indirect
96+
github.com/pion/rtp v1.8.11 // indirect
97+
github.com/pion/sctp v1.8.37 // indirect
98+
github.com/pion/sdp/v3 v3.0.10 // indirect
99+
github.com/pion/srtp/v3 v3.0.4 // indirect
100100
github.com/pion/stun v0.6.1 // indirect
101+
github.com/pion/stun/v3 v3.0.0 // indirect
101102
github.com/pion/transport/v2 v2.2.10 // indirect
102103
github.com/pion/transport/v3 v3.0.7 // indirect
103-
github.com/pion/turn/v2 v2.1.6 // indirect
104-
github.com/pion/webrtc/v3 v3.3.5 // indirect
104+
github.com/pion/turn/v4 v4.0.0 // indirect
105+
github.com/pion/webrtc/v4 v4.0.10 // indirect
105106
github.com/pkg/errors v0.9.1 // indirect
106-
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
107107
github.com/polydawn/refmt v0.89.0 // indirect
108108
github.com/prometheus/client_model v0.6.1 // indirect
109-
github.com/prometheus/common v0.61.0 // indirect
109+
github.com/prometheus/common v0.62.0 // indirect
110110
github.com/prometheus/procfs v0.15.1 // indirect
111111
github.com/quic-go/qpack v0.5.1 // indirect
112-
github.com/quic-go/quic-go v0.48.2 // indirect
112+
github.com/quic-go/quic-go v0.50.1 // indirect
113113
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 // indirect
114114
github.com/raulk/go-watchdog v1.3.0 // indirect
115115
github.com/spaolacci/murmur3 v1.1.0 // indirect
116-
github.com/stretchr/testify v1.10.0 // indirect
117116
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
118117
github.com/wlynxg/anet v0.0.5 // indirect
119118
github.com/zeebo/blake3 v0.2.4 // indirect
@@ -128,17 +127,16 @@ require (
128127
go.uber.org/multierr v1.11.0 // indirect
129128
go.uber.org/zap v1.27.0 // indirect
130129
go.uber.org/zap/exp v0.3.0 // indirect
131-
golang.org/x/crypto v0.32.0 // indirect
132-
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect
133-
golang.org/x/mod v0.22.0 // indirect
134-
golang.org/x/net v0.34.0 // indirect
135-
golang.org/x/sync v0.10.0 // indirect
136-
golang.org/x/sys v0.29.0 // indirect
137-
golang.org/x/text v0.21.0 // indirect
130+
golang.org/x/crypto v0.35.0 // indirect
131+
golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa // indirect
132+
golang.org/x/mod v0.23.0 // indirect
133+
golang.org/x/net v0.35.0 // indirect
134+
golang.org/x/sync v0.11.0 // indirect
135+
golang.org/x/sys v0.30.0 // indirect
136+
golang.org/x/text v0.22.0 // indirect
138137
golang.org/x/time v0.8.0 // indirect
139-
golang.org/x/tools v0.29.0 // indirect
138+
golang.org/x/tools v0.30.0 // indirect
140139
gonum.org/v1/gonum v0.15.1 // indirect
141-
google.golang.org/protobuf v1.36.4 // indirect
142-
gopkg.in/yaml.v3 v3.0.1 // indirect
143-
lukechampine.com/blake3 v1.3.0 // indirect
140+
google.golang.org/protobuf v1.36.6 // indirect
141+
lukechampine.com/blake3 v1.4.0 // indirect
144142
)

0 commit comments

Comments
 (0)