From be1acfa1c50052f7c198a5f8b6f52863a35d15ca Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Tue, 3 May 2022 10:10:45 -0400 Subject: [PATCH 1/4] chore: update go-libp2p --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 293ac707038..31bf59cacbc 100644 --- a/go.mod +++ b/go.mod @@ -68,7 +68,7 @@ require ( github.com/jbenet/go-temp-err-catcher v0.1.0 github.com/jbenet/goprocess v0.1.4 github.com/libp2p/go-doh-resolver v0.4.0 - github.com/libp2p/go-libp2p v0.19.0 + github.com/libp2p/go-libp2p v0.19.1 github.com/libp2p/go-libp2p-connmgr v0.3.2-0.20220115145817-a7820a5879c7 // indirect github.com/libp2p/go-libp2p-core v0.15.1 github.com/libp2p/go-libp2p-discovery v0.6.0 diff --git a/go.sum b/go.sum index 6859a1fddf5..f398dfc688b 100644 --- a/go.sum +++ b/go.sum @@ -764,8 +764,8 @@ github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0= github.com/libp2p/go-libp2p v0.14.4/go.mod h1:EIRU0Of4J5S8rkockZM7eJp2S0UrCyi55m2kJVru3rM= github.com/libp2p/go-libp2p v0.16.0/go.mod h1:ump42BsirwAWxKzsCiFnTtN1Yc+DuPu76fyMX364/O4= -github.com/libp2p/go-libp2p v0.19.0 h1:zosskMbaobL7UDCVLEe1m5CGs1TaFNFoN/M5XLiKg0U= -github.com/libp2p/go-libp2p v0.19.0/go.mod h1:Ki9jJXLO2YqrTIFxofV7Twyd3INWPT97+r8hGt7XPjI= +github.com/libp2p/go-libp2p v0.19.1 h1:ysBA1vDxhvgy9WmXpDeuk082EakewbJAwfU+ApdTG6I= +github.com/libp2p/go-libp2p v0.19.1/go.mod h1:Ki9jJXLO2YqrTIFxofV7Twyd3INWPT97+r8hGt7XPjI= github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo= github.com/libp2p/go-libp2p-asn-util v0.1.0/go.mod h1:wu+AnM9Ii2KgO5jMmS1rz9dvzTdj8BXqsPR9HR0XB7I= github.com/libp2p/go-libp2p-asn-util v0.2.0 h1:rg3+Os8jbnO5DxkC7K/Utdi+DkY3q/d1/1q+8WeNAsw= From 7ad6447453856f8a92bdd01fb02dbc9e8038e98c Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Tue, 3 May 2022 10:10:13 -0400 Subject: [PATCH 2/4] feat: enable hole-punching by default --- .circleci/main.yml | 2 +- core/node/libp2p/relay.go | 5 +++-- docs/config.md | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.circleci/main.yml b/.circleci/main.yml index ab7bc622b2a..8e3265dec9c 100644 --- a/.circleci/main.yml +++ b/.circleci/main.yml @@ -245,7 +245,7 @@ jobs: command: | npm init -y npm install ipfs@^0.61.0 - npm install ipfs-interop@^8.0.0 + npm install ipfs-interop@^8.0.10 npm install mocha-circleci-reporter@0.0.3 working_directory: ~/ipfs/go-ipfs/interop - run: diff --git a/core/node/libp2p/relay.go b/core/node/libp2p/relay.go index 5e218dcfe82..06bf3d791e2 100644 --- a/core/node/libp2p/relay.go +++ b/core/node/libp2p/relay.go @@ -69,9 +69,10 @@ func AutoRelay(staticRelays []string, peerChan <-chan peer.AddrInfo) func() (opt func HolePunching(flag config.Flag, hasRelayClient bool) func() (opts Libp2pOpts, err error) { return func() (opts Libp2pOpts, err error) { - if flag.WithDefault(false) { + if flag.WithDefault(true) { if !hasRelayClient { - log.Fatal("To enable `Swarm.EnableHolePunching` requires `Swarm.RelayClient.Enabled` to be enabled.") + log.Fatal("Failed to enable `Swarm.EnableHolePunching`, it requires `Swarm.RelayClient.Enabled` to be true.") + return } opts.Opts = append(opts.Opts, libp2p.EnableHolePunching()) } diff --git a/docs/config.md b/docs/config.md index d80c7831a13..0aa9e002d36 100644 --- a/docs/config.md +++ b/docs/config.md @@ -1383,7 +1383,7 @@ to [upgrade to a direct connection](https://github.com/libp2p/specs/blob/master/ through a NAT/firewall whenever possible. This feature requires `Swarm.RelayClient.Enabled` to be set to `true`. -Default: `false` +Default: `true` Type: `flag` From 346fd9d8544152e906da9eede6f7cde93a5810d5 Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Tue, 3 May 2022 11:39:22 -0400 Subject: [PATCH 3/4] fix: when the relay client is disabled and hole punching is left in its default state silently turn off hole punching instead of panicking --- core/node/libp2p/relay.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/node/libp2p/relay.go b/core/node/libp2p/relay.go index 06bf3d791e2..b3d93e19e0d 100644 --- a/core/node/libp2p/relay.go +++ b/core/node/libp2p/relay.go @@ -71,7 +71,11 @@ func HolePunching(flag config.Flag, hasRelayClient bool) func() (opts Libp2pOpts return func() (opts Libp2pOpts, err error) { if flag.WithDefault(true) { if !hasRelayClient { - log.Fatal("Failed to enable `Swarm.EnableHolePunching`, it requires `Swarm.RelayClient.Enabled` to be true.") + // If hole punching is explicitly enabled but the relay client is disabled then panic, + // otherwise just silently disable hole punching + if flag != config.Default { + log.Fatal("Failed to enable `Swarm.EnableHolePunching`, it requires `Swarm.RelayClient.Enabled` to be true.") + } return } opts.Opts = append(opts.Opts, libp2p.EnableHolePunching()) From 185971b259d3e53ab5b19ac4021e3059961fcf28 Mon Sep 17 00:00:00 2001 From: Adin Schmahmann Date: Tue, 3 May 2022 14:23:24 -0400 Subject: [PATCH 4/4] fix: add info log indicating that hole punching has been disabled when it is left as the default but the relay client is disabled. --- core/node/libp2p/relay.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/node/libp2p/relay.go b/core/node/libp2p/relay.go index b3d93e19e0d..5bb8b946e51 100644 --- a/core/node/libp2p/relay.go +++ b/core/node/libp2p/relay.go @@ -75,6 +75,8 @@ func HolePunching(flag config.Flag, hasRelayClient bool) func() (opts Libp2pOpts // otherwise just silently disable hole punching if flag != config.Default { log.Fatal("Failed to enable `Swarm.EnableHolePunching`, it requires `Swarm.RelayClient.Enabled` to be true.") + } else { + log.Info("HolePunching has been disabled due to the RelayClient being disabled.") } return }