From bfaacfbe626be4279574a2a64b813b938c084e16 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Mon, 6 Sep 2021 18:55:50 -0400 Subject: [PATCH] fix: peer lock --- waku/v2/node/wakunode2.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/waku/v2/node/wakunode2.go b/waku/v2/node/wakunode2.go index 9618c481..72dd7c90 100644 --- a/waku/v2/node/wakunode2.go +++ b/waku/v2/node/wakunode2.go @@ -307,11 +307,10 @@ func (w *WakuNode) ID() string { return w.host.ID().Pretty() } -func (w *WakuNode) GetPeerStats() PeerStats { - return w.peers -} - func (w *WakuNode) IsOnline() bool { + w.peersMutex.Lock() + defer w.peersMutex.Unlock() + hasRelay := false hasLightPush := false hasStore := false @@ -340,6 +339,9 @@ func (w *WakuNode) IsOnline() bool { } func (w *WakuNode) HasHistory() bool { + w.peersMutex.Lock() + defer w.peersMutex.Unlock() + for _, v := range w.peers { for _, protocol := range v { if protocol == string(store.WakuStoreProtocolId) { @@ -751,6 +753,8 @@ func (w *WakuNode) ClosePeerById(id peer.ID) error { } func (w *WakuNode) PeerCount() int { + w.peersMutex.Lock() + defer w.peersMutex.Unlock() return len(w.peers) } @@ -800,15 +804,16 @@ func (w *WakuNode) startKeepAlive(t time.Duration) { go func(peer peer.ID) { peerFound := false + w.peersMutex.Lock() for p := range w.peers { if p == peer { peerFound = true break } } - - //log.Info("###PING " + s + " before fetching result") - //logwriter.Write([]byte("###PING " + s + " before fetching result")) + defer w.peersMutex.Unlock() + log.Debug("###PING before fetching result") + pingTicker := time.NewTicker(time.Duration(1) * time.Second) isError := false select {