mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 23:26:44 +00:00
swarm/network: kad fixes
* handleGetPeersMsg Send call async * RequestOrder send outside mutex lock scope
This commit is contained in:
parent
8863324fff
commit
c4f33d4ea5
1 changed files with 14 additions and 8 deletions
|
|
@ -201,7 +201,8 @@ func (d *discPeer) handleGetPeersMsg(msg *getPeersMsg) error {
|
||||||
resp := &peersMsg{
|
resp := &peersMsg{
|
||||||
Peers: peers,
|
Peers: peers,
|
||||||
}
|
}
|
||||||
return d.Send(resp)
|
go d.Send(resp)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RequestOrder broadcasts to trageted peers a request for peers of a particular
|
// RequestOrder broadcasts to trageted peers a request for peers of a particular
|
||||||
|
|
@ -212,17 +213,22 @@ func RequestOrder(k Overlay, order, broadcastSize, maxPeers uint8) {
|
||||||
Max: maxPeers,
|
Max: maxPeers,
|
||||||
}
|
}
|
||||||
var i uint8
|
var i uint8
|
||||||
//var err error
|
var peers []Conn
|
||||||
k.EachConn(nil, 255, func(p OverlayConn, po int, isproxbin bool) bool {
|
k.EachConn(nil, 255, func(p OverlayConn, po int, isproxbin bool) bool {
|
||||||
if err := p.(Conn).Send(req); err == nil {
|
peers = append(peers, p.(Conn))
|
||||||
i++
|
if len(peers) >= int(broadcastSize) {
|
||||||
if i >= broadcastSize {
|
return false
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
log.Info(fmt.Sprintf("requesting bees of PO%03d from %v/%v (each max %v)", order, i, broadcastSize, maxPeers))
|
go func() {
|
||||||
|
for _, c := range peers {
|
||||||
|
if err := c.Send(req); err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.Info(fmt.Sprintf("requesting bees of PO%03d from %v/%v (each max %v)", order, i, broadcastSize, maxPeers))
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *discPeer) seen(p OverlayPeer) bool {
|
func (d *discPeer) seen(p OverlayPeer) bool {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue