diff --git a/go.mod b/go.mod index 18f9d78f..d2d79e0c 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/waku-org/go-waku -go 1.20 +go 1.19 replace github.com/ethereum/go-ethereum v1.10.26 => github.com/status-im/go-ethereum v1.10.25-status.4 diff --git a/waku/v2/node/wakunode2.go b/waku/v2/node/wakunode2.go index 395c6444..578d4cdd 100644 --- a/waku/v2/node/wakunode2.go +++ b/waku/v2/node/wakunode2.go @@ -11,7 +11,6 @@ import ( golog "github.com/ipfs/go-log/v2" "github.com/libp2p/go-libp2p" "go.uber.org/zap" - "golang.org/x/exp/maps" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/p2p/enode" @@ -325,13 +324,13 @@ func (w *WakuNode) watchMultiaddressChanges(ctx context.Context) { case <-ctx.Done(): return case <-first: - addr := maps.Keys(addrsSet) + addr := utils.MultiAddrFromSet(addrsSet) w.log.Info("listening", logging.MultiAddrs("multiaddr", addr...)) case <-w.addressChangesSub.Out(): newAddrs := utils.MultiAddrSet(w.ListenAddresses()...) - if !maps.Equal(addrsSet, newAddrs) { + if !utils.MultiAddrSetEquals(addrsSet, newAddrs) { addrsSet = newAddrs - addrs := maps.Keys(addrsSet) + addrs := utils.MultiAddrFromSet(addrsSet) w.log.Info("listening addresses update received", logging.MultiAddrs("multiaddr", addrs...)) err := w.setupENR(ctx, addrs) if err != nil { diff --git a/waku/v2/utils/multiaddr.go b/waku/v2/utils/multiaddr.go index ef09e64e..53740344 100644 --- a/waku/v2/utils/multiaddr.go +++ b/waku/v2/utils/multiaddr.go @@ -24,3 +24,26 @@ func MultiAddrSet(addr ...multiaddr.Multiaddr) map[multiaddr.Multiaddr]struct{} } return r } + +func MultiAddrSetEquals(m1 map[multiaddr.Multiaddr]struct{}, m2 map[multiaddr.Multiaddr]struct{}) bool { + if len(m1) != len(m2) { + return false + } + + for k := range m1 { + _, ok := m2[k] + if !ok { + return false + } + } + + return true +} + +func MultiAddrFromSet(m map[multiaddr.Multiaddr]struct{}) []multiaddr.Multiaddr { + var r []multiaddr.Multiaddr + for k := range m { + r = append(r, k) + } + return r +}