diff --git a/p2p/discover/lookup.go b/p2p/discover/lookup.go index f988e06838..79b4d86144 100644 --- a/p2p/discover/lookup.go +++ b/p2p/discover/lookup.go @@ -18,6 +18,7 @@ package discover import ( "context" + "time" "github.com/ethereum/go-ethereum/p2p/enode" ) @@ -106,6 +107,12 @@ func (it *lookup) startQueries() bool { it.tab.mutex.Lock() closest := it.tab.closest(it.result.target, bucketSize, false) it.tab.mutex.Unlock() + // Avoid finishing the lookup too quickly if table is empty. It'd be better to wait + // for the table to fill in this case, but there is no good mechanism for that + // yet. + if len(closest.entries) == 0 { + time.Sleep(1 * time.Second) + } it.queries = 1 it.replyCh <- closest.entries return true