From 95263914fcc6631aedc7294624ae39c2adf3cb5f Mon Sep 17 00:00:00 2001
From: Martin Holst Swende <martin@swende.se>
Date: Mon, 13 May 2019 11:25:54 +0200
Subject: [PATCH] p2p/discover: fix a race where table loop would self-lookup
 before returning from constructor

---
 p2p/discover/table.go           | 1 -
 p2p/discover/table_util_test.go | 1 +
 p2p/discover/v4_udp.go          | 1 +
 3 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/p2p/discover/table.go b/p2p/discover/table.go
index 8afe77bf1..61c62f187 100644
--- a/p2p/discover/table.go
+++ b/p2p/discover/table.go
@@ -119,7 +119,6 @@ func newTable(t transport, db *enode.DB, bootnodes []*enode.Node, log log.Logger
 	tab.seedRand()
 	tab.loadSeedNodes()
 
-	go tab.loop()
 	return tab, nil
 }
 
diff --git a/p2p/discover/table_util_test.go b/p2p/discover/table_util_test.go
index 811466cf7..71cb1895b 100644
--- a/p2p/discover/table_util_test.go
+++ b/p2p/discover/table_util_test.go
@@ -42,6 +42,7 @@ func init() {
 func newTestTable(t transport) (*Table, *enode.DB) {
 	db, _ := enode.OpenDB("")
 	tab, _ := newTable(t, db, nil, log.Root())
+	go tab.loop()
 	return tab, db
 }
 
diff --git a/p2p/discover/v4_udp.go b/p2p/discover/v4_udp.go
index cdd42c38a..3c68beac1 100644
--- a/p2p/discover/v4_udp.go
+++ b/p2p/discover/v4_udp.go
@@ -253,6 +253,7 @@ func ListenV4(c UDPConn, ln *enode.LocalNode, cfg Config) (*UDPv4, error) {
 		return nil, err
 	}
 	t.tab = tab
+	go tab.loop()
 
 	t.wg.Add(2)
 	go t.loop()
-- 
GitLab