From 7dd02067f8d5df10604edaee9f05a1f80ac3e8d3 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Mon, 3 Jul 2023 13:17:20 -0400 Subject: [PATCH] fix: unsubscribe from all peers unless specified and check err code when full node has no subscription --- waku/v2/protocol/filter/client.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/waku/v2/protocol/filter/client.go b/waku/v2/protocol/filter/client.go index ce617d96..083791e5 100644 --- a/waku/v2/protocol/filter/client.go +++ b/waku/v2/protocol/filter/client.go @@ -256,10 +256,6 @@ func (wf *WakuFilterLightnode) getUnsubscribeParameters(opts ...FilterUnsubscrib opt(params) } - if !params.unsubscribeAll && params.selectedPeer == "" { - return nil, ErrNoPeersAvailable - } - return params, nil } @@ -350,7 +346,7 @@ func (wf *WakuFilterLightnode) Unsubscribe(ctx context.Context, contentFilter Co resultChan := make(chan WakuFilterPushResult, len(wf.subscriptions.items)) for peerID := range wf.subscriptions.items { - if !params.unsubscribeAll && peerID != params.selectedPeer { + if params.selectedPeer != "" && peerID != params.selectedPeer { continue } @@ -363,8 +359,13 @@ func (wf *WakuFilterLightnode) Unsubscribe(ctx context.Context, contentFilter Co pb.FilterSubscribeRequest_UNSUBSCRIBE, contentFilter) if err != nil { - wf.log.Error("could not unsubscribe from peer", logging.HostID("peerID", peerID), zap.Error(err)) - return + ferr, ok := err.(*FilterError) + if ok && ferr.Code == http.StatusNotFound { + wf.log.Warn("peer does not have a subscription", logging.HostID("peerID", peerID), zap.Error(err)) + } else { + wf.log.Error("could not unsubscribe from peer", logging.HostID("peerID", peerID), zap.Error(err)) + return + } } wf.cleanupSubscriptions(peerID, contentFilter) @@ -408,7 +409,7 @@ func (wf *WakuFilterLightnode) UnsubscribeAll(ctx context.Context, opts ...Filte resultChan := make(chan WakuFilterPushResult, len(wf.subscriptions.items)) for peerID := range wf.subscriptions.items { - if !params.unsubscribeAll && peerID != params.selectedPeer { + if params.selectedPeer != "" && peerID != params.selectedPeer { continue } localWg.Add(1)