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 {