From bbe58bbd7320932c1df97f370b6728c9b5eb535f Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Tue, 4 Aug 2015 01:20:10 +1000 Subject: [PATCH] Filter out DHT peers with port 0 Probably not necessary now we ban the nodes that send them, but it's appropriate to check here too. --- client.go | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/client.go b/client.go index 9469096f..ec3f94dc 100644 --- a/client.go +++ b/client.go @@ -2261,24 +2261,26 @@ func (cl *Client) announceTorrentDHT(t *torrent, impliedPort bool) { if !ok { break getPeers } - peersFoundByDHT.Add(int64(len(v.Peers))) - for _, p := range v.Peers { - allAddrs[(&net.UDPAddr{ - IP: p.IP[:], - Port: int(p.Port), - }).String()] = struct{}{} + addPeers := make([]Peer, 0, len(v.Peers)) + for _, cp := range v.Peers { + if cp.Port == 0 { + // Can't do anything with this. + continue + } + addPeers = append(addPeers, Peer{ + IP: cp.IP[:], + Port: int(cp.Port), + Source: peerSourceDHT, + }) + key := (&net.UDPAddr{ + IP: cp.IP[:], + Port: int(cp.Port), + }).String() + allAddrs[key] = struct{}{} } + peersFoundByDHT.Add(int64(len(addPeers))) cl.mu.Lock() - cl.addPeers(t, func() (ret []Peer) { - for _, cp := range v.Peers { - ret = append(ret, Peer{ - IP: cp.IP[:], - Port: int(cp.Port), - Source: peerSourceDHT, - }) - } - return - }()) + cl.addPeers(t, addPeers) numPeers := len(t.Peers) cl.mu.Unlock() if numPeers >= torrentPeersHighWater { -- 2.48.1