From: Matt Joiner Date: Thu, 24 Jul 2014 03:45:18 +0000 (+1000) Subject: dht: Message only the most likely peers X-Git-Tag: v1.0.0~1641 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=cd7a758acd764231c1c99c0f0b27eaeaaa444798;p=btrtrc.git dht: Message only the most likely peers --- 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()