mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 21:56:43 +00:00
swarm/network: kaddb.findBest does not get stuck on empty row but finds an actual missing node
This commit is contained in:
parent
df5c8f3ab5
commit
f72d3b26a2
2 changed files with 5 additions and 7 deletions
|
|
@ -131,7 +131,8 @@ func (self *Hive) Start(id discover.NodeID, listenAddr func() string, connectPee
|
|||
// enode or any lower level connection address is unnecessary in future
|
||||
// discovery table is used to look it up.
|
||||
connectPeer(node.Url)
|
||||
} else if need {
|
||||
}
|
||||
if need {
|
||||
// a random peer is taken from the table
|
||||
peers := self.kad.FindClosest(kademlia.RandomAddressAt(self.addr, rand.Intn(self.kad.MaxProx)), 1)
|
||||
if len(peers) > 0 {
|
||||
|
|
@ -342,7 +343,7 @@ func (self *Hive) peers(req *retrieveRequestMsgData) {
|
|||
for _, peer := range self.getPeers(key, int(req.MaxPeers)) {
|
||||
addrs = append(addrs, peer.remoteAddr)
|
||||
}
|
||||
glog.V(logger.Debug).Infof("[BZZ] Hive sending %d peer addresses to %v. req.Id: %v, req.Key: %x", len(addrs), req.from, req.Id, req.Key.Log())
|
||||
glog.V(logger.Debug).Infof("[BZZ] Hive sending %d peer addresses to %v. req.Id: %v, req.Key: %v", len(addrs), req.from, req.Id, req.Key.Log())
|
||||
|
||||
peersData := &peersMsgData{
|
||||
Peers: addrs,
|
||||
|
|
|
|||
|
|
@ -228,15 +228,12 @@ func (self *KadDb) findBest(maxBinSize int, binSize func(int) int) (node *NodeRe
|
|||
self.cursors[po] = cursor
|
||||
self.delete(po, purge)
|
||||
if found {
|
||||
return node, true, proxLimit
|
||||
return node, need, proxLimit
|
||||
}
|
||||
} // ROUND
|
||||
if need {
|
||||
return nil, true, proxLimit
|
||||
}
|
||||
} // ROUNDS
|
||||
|
||||
return nil, false, proxLimit
|
||||
return nil, need, proxLimit
|
||||
}
|
||||
|
||||
// deletes the noderecords of a kaddb row corresponding to the indexes
|
||||
|
|
|
|||
Loading…
Reference in a new issue