Fix race condition in FindNode

This commit is contained in:
Kleissner
2021-09-24 13:45:12 +02:00
parent 7e402de278
commit 175f1fb438

View File

@@ -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 ----