Skip to content

Commit 8cd0e01

Browse files
committed
feat(libp2p): enable shared TCP listeners
1 parent c5586d5 commit 8cd0e01

File tree

4 files changed

+11
-8
lines changed

4 files changed

+11
-8
lines changed

core/node/libp2p/transport.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@ func Transports(tptConfig config.Transports) interface{} {
2424
) (opts Libp2pOpts, err error) {
2525
privateNetworkEnabled := params.Fprint != nil
2626

27-
if tptConfig.Network.TCP.WithDefault(true) {
27+
tcpEnabled := tptConfig.Network.TCP.WithDefault(true)
28+
wsEnabled := tptConfig.Network.Websocket.WithDefault(true)
29+
if tcpEnabled {
2830
// TODO(9290): Make WithMetrics configurable
2931
opts.Opts = append(opts.Opts, libp2p.Transport(tcp.NewTCPTransport, tcp.WithMetrics()))
3032
}
3133

32-
if tptConfig.Network.Websocket.WithDefault(true) {
34+
if wsEnabled {
3335
if params.ForgeMgr == nil {
3436
opts.Opts = append(opts.Opts, libp2p.Transport(websocket.New))
3537
} else {
@@ -64,6 +66,10 @@ func Transports(tptConfig config.Transports) interface{} {
6466
opts.Opts = append(opts.Opts, libp2p.Transport(webrtc.New))
6567
}
6668

69+
if tcpEnabled || wsEnabled {
70+
opts.Opts = append(opts.Opts, libp2p.ShareTCPListener())
71+
}
72+
6773
return opts, nil
6874
}
6975
}

docs/config.md

-3
Original file line numberDiff line numberDiff line change
@@ -505,9 +505,6 @@ Kubo will obtain and set up a trusted PKI TLS certificate for it, making it dial
505505
> add catch-all `/ip4/0.0.0.0/tcp/4002/tls/sni/*.libp2p.direct/ws` and `/ip6/::/tcp/4002/tls/sni/*.libp2p.direct/ws` to [`Addresses.Swarm`](#addressesswarm)
506506
> and **wait 5-15 minutes** for libp2p node to set up and learn about own public addresses via [AutoNAT](#autonat).
507507
> - If your node is fresh and just started, the [p2p-forge] client may produce and log ERRORs during this time, but once a publicly diallable addresses are set up, a subsequent retry should be successful.
508-
> - Listeners defined in [`Addresses.Swarm`](#addressesswarm) with `/tls/sni` must use a separate port from other TCP listeners, e.g. `4002` instead of the default `4001`.
509-
> - A separate port (`/tcp/4002`) has to be used instead of `/tcp/4001` because we wait for TCP port sharing ([go-libp2p#2984](https://github.com/libp2p/go-libp2p/issues/2684)) to be implemented.
510-
> - If you use manual port forwarding, make sure incoming connections to this additional port are allowed the same way `4001` ones already are.
511508
> - The TLS certificate is used only for [libp2p WebSocket](https://github.com/libp2p/specs/blob/master/websockets/README.md) connections.
512509
> - Right now, this is NOT used for hosting a [Gateway](#gateway) over HTTPS (that use case still requires manual TLS setup on reverse proxy, and your own domain).
513510

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ require (
5454
github.com/jbenet/goprocess v0.1.4
5555
github.com/julienschmidt/httprouter v1.3.0
5656
github.com/libp2p/go-doh-resolver v0.4.0
57-
github.com/libp2p/go-libp2p v0.37.0
57+
github.com/libp2p/go-libp2p v0.37.1-0.20241030193321-8c334af068c3
5858
github.com/libp2p/go-libp2p-http v0.5.0
5959
github.com/libp2p/go-libp2p-kad-dht v0.27.0
6060
github.com/libp2p/go-libp2p-kbucket v0.6.4

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -541,8 +541,8 @@ github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZ
541541
github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs=
542542
github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw=
543543
github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:st3qqfu8+pMfh+9Mzqb2GTiwrAGjIPszEjZmtksN8Jc=
544-
github.com/libp2p/go-libp2p v0.37.0 h1:8K3mcZgwTldydMCNOiNi/ZJrOB9BY+GlI3UxYzxBi9A=
545-
github.com/libp2p/go-libp2p v0.37.0/go.mod h1:GOKmSN99scDuYGTwaTbQPR8Nt6dxrK3ue7OjW2NGDg4=
544+
github.com/libp2p/go-libp2p v0.37.1-0.20241030193321-8c334af068c3 h1:Qy3fjegOhtmtYryuOQWMpOpEkDE+2gMzSB0Sek7jtak=
545+
github.com/libp2p/go-libp2p v0.37.1-0.20241030193321-8c334af068c3/go.mod h1:GOKmSN99scDuYGTwaTbQPR8Nt6dxrK3ue7OjW2NGDg4=
546546
github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
547547
github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
548548
github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g=

0 commit comments

Comments
 (0)