fix(PeerManager): SelectRandom filter by protocol

This commit is contained in:
Igor Sirotin 2025-11-13 14:50:50 +00:00
parent 84a4b1be7a
commit 99b3ab5b2a
No known key found for this signature in database
GPG Key ID: 0EABBCB40CB9AD4A

View File

@ -7,11 +7,12 @@ import (
"github.com/libp2p/go-libp2p/core/peer"
"github.com/libp2p/go-libp2p/core/protocol"
"go.uber.org/zap"
"golang.org/x/exp/maps"
wps "github.com/waku-org/go-waku/waku/v2/peerstore"
waku_proto "github.com/waku-org/go-waku/waku/v2/protocol"
"github.com/waku-org/go-waku/waku/v2/utils"
"go.uber.org/zap"
"golang.org/x/exp/maps"
)
type PeerSet map[peer.ID]struct{}
@ -72,7 +73,7 @@ func (pm *PeerManager) SelectRandom(criteria PeerSelectionCriteria) (peer.IDSlic
if err != nil {
return nil, err
}
if len(criteria.PubsubTopics) > 0 {
if len(criteria.PubsubTopics) > 0 && len(filteredPeers) > 0 {
filteredPeers = pm.host.Peerstore().(wps.WakuPeerstore).PeersByPubSubTopics(criteria.PubsubTopics, filteredPeers...)
}
//Not passing excludePeers as filterPeers are already considering excluded ones.