diff --git a/go.mod b/go.mod index c799d09f8..6611f4360 100644 --- a/go.mod +++ b/go.mod @@ -78,7 +78,7 @@ require ( github.com/ipfs/go-log/v2 v2.5.1 github.com/ladydascalie/currency v1.6.0 github.com/meirf/gopart v0.0.0-20180520194036-37e9492a85a8 - github.com/waku-org/go-waku v0.5.2-0.20230221221637-74b734c337e9 + github.com/waku-org/go-waku v0.5.2-0.20230223234511-57f6110074d0 github.com/yeqown/go-qrcode/v2 v2.2.1 github.com/yeqown/go-qrcode/writer/standard v1.2.1 ) diff --git a/go.sum b/go.sum index 9a1f70a63..eb980c7b9 100644 --- a/go.sum +++ b/go.sum @@ -2105,8 +2105,8 @@ github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1 github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/waku-org/go-discover v0.0.0-20221209174356-61c833f34d98 h1:xwY0kW5XZFimdqfZb9cZwT1S3VJP9j3AE6bdNd9boXM= github.com/waku-org/go-discover v0.0.0-20221209174356-61c833f34d98/go.mod h1:eBHgM6T4EG0RZzxpxKy+rGz/6Dw2Nd8DWxS0lm9ESDw= -github.com/waku-org/go-waku v0.5.2-0.20230221221637-74b734c337e9 h1:9AiqlpVucwUx+Lm1gBLOwk1VUgozGYmnJ4KM9mH/Irk= -github.com/waku-org/go-waku v0.5.2-0.20230221221637-74b734c337e9/go.mod h1:hupqK7cKFAmY+r/EW7LLaPnMLsPrm0fW1OuR6KrO8a8= +github.com/waku-org/go-waku v0.5.2-0.20230223234511-57f6110074d0 h1:WfPpenX+U8pzYrT14Ei1thbU6aGSbf4AM048EF75nX8= +github.com/waku-org/go-waku v0.5.2-0.20230223234511-57f6110074d0/go.mod h1:hupqK7cKFAmY+r/EW7LLaPnMLsPrm0fW1OuR6KrO8a8= github.com/waku-org/go-zerokit-rln v0.1.7-wakuorg h1:2vVIBCtBih2w1K9ll8YnToTDZvbxcgbsClsPlJS/kkg= github.com/waku-org/go-zerokit-rln v0.1.7-wakuorg/go.mod h1:GlyaVeEWNEBxVJrWC6jFTvb4LNb9d9qnjdS6EiWVUvk= github.com/wealdtech/go-ens/v3 v3.5.0 h1:Huc9GxBgiGweCOGTYomvsg07K2QggAqZpZ5SuiZdC8o= diff --git a/vendor/github.com/waku-org/go-waku/waku/v2/node/localnode.go b/vendor/github.com/waku-org/go-waku/waku/v2/node/localnode.go index 15ed08a92..f866e77bc 100644 --- a/vendor/github.com/waku-org/go-waku/waku/v2/node/localnode.go +++ b/vendor/github.com/waku-org/go-waku/waku/v2/node/localnode.go @@ -5,7 +5,6 @@ import ( "crypto/ecdsa" "encoding/binary" "errors" - "fmt" "math" "math/rand" "net" @@ -30,6 +29,8 @@ func (w *WakuNode) newLocalnode(priv *ecdsa.PrivateKey) (*enode.LocalNode, error func writeMultiaddressField(localnode *enode.LocalNode, addrAggr []ma.Multiaddr) (err error) { defer func() { if e := recover(); e != nil { + // Deleting the multiaddr entry, as we could not write it succesfully + localnode.Delete(enr.WithEntry(utils.MultiaddrENRField, struct{}{})) err = errors.New("could not write enr record") } }() @@ -44,7 +45,7 @@ func writeMultiaddressField(localnode *enode.LocalNode, addrAggr []ma.Multiaddr) fieldRaw = append(fieldRaw, maRaw...) } - if len(fieldRaw) != 0 { + if len(fieldRaw) != 0 && len(fieldRaw) <= 100 { // Max length for multiaddr field before triggering the 300 bytes limit localnode.Set(enr.WithEntry(utils.MultiaddrENRField, fieldRaw)) } @@ -75,13 +76,13 @@ func (w *WakuNode) updateLocalNode(localnode *enode.LocalNode, multiaddrs []ma.M localnode.SetStaticIP(ipAddr.IP) localnode.Set(enr.TCP(uint16(ipAddr.Port))) // TODO: ipv6? - return writeMultiaddresses(localnode, multiaddrs, w.log) + return writeMultiaddresses(localnode, multiaddrs) } else if !shouldAutoUpdate { // We received a libp2p address update. Autoupdate is disabled // Using a static ip will disable endpoint prediction. localnode.SetStaticIP(ipAddr.IP) localnode.Set(enr.TCP(uint16(ipAddr.Port))) // TODO: ipv6? - return writeMultiaddresses(localnode, multiaddrs, w.log) + return writeMultiaddresses(localnode, multiaddrs) } else { // We received a libp2p address update, but we should still // allow discv5 to update the enr record. We set the localnode @@ -97,7 +98,7 @@ func (w *WakuNode) updateLocalNode(localnode *enode.LocalNode, multiaddrs []ma.M localnode.Delete(enr.TCP(0)) } - if ip6 != nil && !ip6.IsUnspecified() { + if ip4 == nil && ip6 != nil && !ip6.IsUnspecified() { localnode.Set(enr.IPv6(ip6)) localnode.Set(enr.TCP6(ipAddr.Port)) } else { @@ -105,12 +106,12 @@ func (w *WakuNode) updateLocalNode(localnode *enode.LocalNode, multiaddrs []ma.M localnode.Delete(enr.TCP6(0)) } - return writeMultiaddresses(localnode, multiaddrs, w.log) + return writeMultiaddresses(localnode, multiaddrs) } } -func writeMultiaddresses(localnode *enode.LocalNode, multiaddrs []ma.Multiaddr, logger *zap.Logger) error { +func writeMultiaddresses(localnode *enode.LocalNode, multiaddrs []ma.Multiaddr) error { // Randomly shuffle multiaddresses rand.Seed(time.Now().UnixNano()) rand.Shuffle(len(multiaddrs), func(i, j int) { multiaddrs[i], multiaddrs[j] = multiaddrs[j], multiaddrs[i] }) @@ -128,27 +129,14 @@ func writeMultiaddresses(localnode *enode.LocalNode, multiaddrs []ma.Multiaddr, break } else { failedOnceWritingENR = true - localnode.Delete(enr.WithEntry(utils.MultiaddrENRField, struct{}{})) } } - fmt.Println("WriteMultiaddresses ================================================================") - fmt.Println("Multiaddresses:", multiaddrs) - fmt.Println("Failed to write ENR?", failedOnceWritingENR) - fmt.Println("SuccessIDX:", successIdx) - logger.Info("Updating ENR ---", zap.Any("multiaddr", multiaddrs), zap.Int("successIDX", successIdx), zap.Bool("Failed to write enr", failedOnceWritingENR)) - fmt.Println("------------------------------------------------------------") - - if failedOnceWritingENR { - if !couldWriteENRatLeastOnce { - // In case multiaddr could not be populated at all - localnode.Delete(enr.WithEntry(utils.MultiaddrENRField, struct{}{})) - } else { - // Could write a subset of multiaddresses but not all - err = writeMultiaddressField(localnode, multiaddrs[0:successIdx]) - if err != nil { - return errors.New("could not write new ENR") - } + if failedOnceWritingENR && couldWriteENRatLeastOnce { + // Could write a subset of multiaddresses but not all + err = writeMultiaddressField(localnode, multiaddrs[0:successIdx]) + if err != nil { + return errors.New("could not write new ENR") } } @@ -353,11 +341,6 @@ func (w *WakuNode) getENRAddresses(addrs []ma.Multiaddr) (extAddr *net.TCPAddr, } func (w *WakuNode) setupENR(ctx context.Context, addrs []ma.Multiaddr) error { - fmt.Println("SetupENR ================================================================") - fmt.Println("Multiaddresses", addrs) - w.log.Info("Setup ENR", zap.Any("multiaddresses", addrs)) - fmt.Println("------------------------------------------------------------") - ipAddr, multiaddresses, err := w.getENRAddresses(addrs) if err != nil { w.log.Error("obtaining external address", zap.Error(err)) diff --git a/vendor/modules.txt b/vendor/modules.txt index 9b03faf0d..65c52e8f3 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -985,7 +985,7 @@ github.com/vacp2p/mvds/transport github.com/waku-org/go-discover/discover github.com/waku-org/go-discover/discover/v4wire github.com/waku-org/go-discover/discover/v5wire -# github.com/waku-org/go-waku v0.5.2-0.20230221221637-74b734c337e9 +# github.com/waku-org/go-waku v0.5.2-0.20230223234511-57f6110074d0 ## explicit; go 1.19 github.com/waku-org/go-waku/logging github.com/waku-org/go-waku/waku/persistence