From cd7a758acd764231c1c99c0f0b27eaeaaa444798 Mon Sep 17 00:00:00 2001
From: Matt Joiner <anacrolix@gmail.com>
Date: Thu, 24 Jul 2014 13:45:18 +1000
Subject: [PATCH] dht: Message only the most likely peers

---
 dht/dht.go | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/dht/dht.go b/dht/dht.go
index abcc7a42..3cb1f0f4 100644
--- a/dht/dht.go
+++ b/dht/dht.go
@@ -626,7 +626,7 @@ func (s *Server) GetPeers(infoHash string) (ps *peerStream, err error) {
 	done := make(chan struct{})
 	pending := 0
 	s.mu.Lock()
-	for _, n := range s.nodes {
+	for _, n := range s.closestGoodNodes(160, infoHash) {
 		var t *transaction
 		t, err = s.getPeers(n.addr, infoHash)
 		if err != nil {
@@ -727,13 +727,22 @@ func (s *Server) Bootstrap() (err error) {
 		}
 		s.mu.Lock()
 		// log.Printf("now have %d nodes", len(s.nodes))
-		if len(s.nodes) >= 8*160 {
+		if s.numGoodNodes() >= 160 {
 			break
 		}
 	}
 	return
 }
 
+func (s *Server) numGoodNodes() (num int) {
+	for _, n := range s.nodes {
+		if n.Good() {
+			num++
+		}
+	}
+	return
+}
+
 func (s *Server) NumNodes() int {
 	s.mu.Lock()
 	defer s.mu.Unlock()
-- 
2.51.0