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
|
// enode or any lower level connection address is unnecessary in future
|
||||||
// discovery table is used to look it up.
|
// discovery table is used to look it up.
|
||||||
connectPeer(node.Url)
|
connectPeer(node.Url)
|
||||||
} else if need {
|
}
|
||||||
|
if need {
|
||||||
// a random peer is taken from the table
|
// a random peer is taken from the table
|
||||||
peers := self.kad.FindClosest(kademlia.RandomAddressAt(self.addr, rand.Intn(self.kad.MaxProx)), 1)
|
peers := self.kad.FindClosest(kademlia.RandomAddressAt(self.addr, rand.Intn(self.kad.MaxProx)), 1)
|
||||||
if len(peers) > 0 {
|
if len(peers) > 0 {
|
||||||
|
|
@ -342,7 +343,7 @@ func (self *Hive) peers(req *retrieveRequestMsgData) {
|
||||||
for _, peer := range self.getPeers(key, int(req.MaxPeers)) {
|
for _, peer := range self.getPeers(key, int(req.MaxPeers)) {
|
||||||
addrs = append(addrs, peer.remoteAddr)
|
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{
|
peersData := &peersMsgData{
|
||||||
Peers: addrs,
|
Peers: addrs,
|
||||||
|
|
|
||||||
|
|
@ -228,15 +228,12 @@ func (self *KadDb) findBest(maxBinSize int, binSize func(int) int) (node *NodeRe
|
||||||
self.cursors[po] = cursor
|
self.cursors[po] = cursor
|
||||||
self.delete(po, purge)
|
self.delete(po, purge)
|
||||||
if found {
|
if found {
|
||||||
return node, true, proxLimit
|
return node, need, proxLimit
|
||||||
}
|
}
|
||||||
} // ROUND
|
} // ROUND
|
||||||
if need {
|
|
||||||
return nil, true, proxLimit
|
|
||||||
}
|
|
||||||
} // ROUNDS
|
} // ROUNDS
|
||||||
|
|
||||||
return nil, false, proxLimit
|
return nil, need, proxLimit
|
||||||
}
|
}
|
||||||
|
|
||||||
// deletes the noderecords of a kaddb row corresponding to the indexes
|
// deletes the noderecords of a kaddb row corresponding to the indexes
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue