Skip to content

Commit 00feea3

Browse files
committed
p2p: skip nodes with node.nr label when selecting relay peer
1 parent 6ffb1d4 commit 00feea3

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

disco/peer.go

+20
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package disco
22

3+
import "strings"
4+
35
type PeerID string
46

57
func (id PeerID) String() string {
@@ -17,3 +19,21 @@ func (id PeerID) Len() byte {
1719
func (id PeerID) Bytes() []byte {
1820
return []byte(id)
1921
}
22+
23+
type Labels []string
24+
25+
func (ls Labels) Get(key string) (string, bool) {
26+
for _, l := range ls {
27+
kv := strings.Split(l, "=")
28+
if len(kv) == 2 {
29+
if kv[0] == key {
30+
return kv[1], true
31+
}
32+
continue
33+
}
34+
if kv[0] == key {
35+
return "", true
36+
}
37+
}
38+
return "", false
39+
}

p2p/conn.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,12 @@ func (c *PacketConn) relayPeer(peerID disco.PeerID) disco.PeerID {
270270
if meta == nil {
271271
continue
272272
}
273+
if _, ok := disco.Labels(meta["label"]).Get("node.nr"); ok {
274+
// can not as relay peer when `node.nr` label is present
275+
continue
276+
}
273277
peerNAT := disco.NATType(meta.Get("nat"))
274-
if peerNAT == disco.Easy || peerNAT == disco.IP4 {
278+
if peerNAT == disco.Easy || peerNAT == disco.IP4 || peerNAT == disco.IP46 {
275279
return p.PeerID
276280
}
277281
}

0 commit comments

Comments
 (0)