From 612f01400f59b0b4d0db9f9ceaa38f45805ea89e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= <peterke@gmail.com>
Date: Mon, 25 May 2015 16:35:32 +0300
Subject: [PATCH] p2p/discover: bond with seed nodes too (runs only if findnode
 failed)

---
 p2p/discover/table.go | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/p2p/discover/table.go b/p2p/discover/table.go
index 7bff0d1d0..4b7ddb775 100644
--- a/p2p/discover/table.go
+++ b/p2p/discover/table.go
@@ -278,14 +278,11 @@ func (tab *Table) refresh() {
 		for _, seed := range seeds {
 			glog.V(logger.Debug).Infoln("Seeding network with", seed)
 		}
-		peers := append(tab.nursery, seeds...)
-
-		// Bootstrap the table with a self lookup
-		if len(peers) > 0 {
-			tab.mutex.Lock()
-			tab.add(peers)
-			tab.mutex.Unlock()
+		nodes := append(tab.nursery, seeds...)
 
+		// Bond with all the seed nodes (will pingpong only if failed recently)
+		bonded := tab.bondall(nodes)
+		if len(bonded) > 0 {
 			tab.Lookup(tab.self.ID)
 		}
 		// TODO: the Kademlia paper says that we're supposed to perform
-- 
2.18.1