swarm/network: check stream and pss caps in Hive.Run

This commit is contained in:
Janos Guljas 2019-01-21 14:58:06 +01:00
parent 6072822d5f
commit 3029a8289c

View file

@ -155,19 +155,31 @@ func (h *Hive) Run(p *BzzPeer) error {
defer h.untrackPeer(p)
dp := NewPeer(p, h.Kademlia)
depth, changed := h.On(dp)
// if we want discovery, advertise change of depth
if h.Discovery {
if changed {
// if depth changed, send to all peers
NotifyDepth(depth, h.Kademlia)
} else {
// otherwise just send depth to new peer
dp.NotifyDepth(depth)
hasCap := func(capName string) (yes bool) {
for _, c := range p.Caps() {
if c.Name == capName {
return true
}
}
NotifyPeer(p.BzzAddr, h.Kademlia)
return false
}
if hasCap("stream") && hasCap("pss") {
depth, changed := h.On(dp)
// if we want discovery, advertise change of depth
if h.Discovery {
if changed {
// if depth changed, send to all peers
NotifyDepth(depth, h.Kademlia)
} else {
// otherwise just send depth to new peer
dp.NotifyDepth(depth)
}
NotifyPeer(p.BzzAddr, h.Kademlia)
}
defer h.Off(dp)
}
defer h.Off(dp)
return dp.Run(dp.HandleMsg)
}