From 175f1fb43872dd41fe33d235ed996d359642f408 Mon Sep 17 00:00:00 2001 From: Kleissner Date: Fri, 24 Sep 2021 13:45:12 +0200 Subject: [PATCH] Fix race condition in FindNode --- dht/DHT Lite.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dht/DHT Lite.go b/dht/DHT Lite.go index 5ad7a63..ebd183d 100644 --- a/dht/DHT Lite.go +++ b/dht/DHT Lite.go @@ -174,12 +174,11 @@ func (dht *DHT) FindNode(key []byte) (node *Node, err error) { search.LogStatus("dht.FindNode", "Search for node %s. Full timeout %s, per node %s. Alpha = %d.\n", hex.EncodeToString(key), dht.TimeoutSearch.String(), dht.TimeoutIR.String(), dht.alpha) search.SearchAway() - select { - case <-search.TerminateSignal: + result, ok := <-search.Results + if !ok { // Check if closed channel. Redundant with checking <-search.TerminateSignal. return nil, nil - case result := <-search.Results: - return result.TargetNode, nil } + return result.TargetNode, nil } // ---- DHT Health ----