swarm/network: kad fixes

* handleGetPeersMsg Send call async
  * RequestOrder send outside mutex lock scope
This commit is contained in:
zelig 2017-06-26 09:15:07 +02:00
parent 8863324fff
commit c4f33d4ea5

View file

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