fix handling of dead peers (#492)

* fix handling of dead peers

* remove unnecessary continue
This commit is contained in:
vyzo 2022-07-01 19:37:38 +03:00 committed by GitHub
parent 96efa27a1a
commit 60cf380032
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -696,6 +696,16 @@ func (p *PubSub) handleDeadPeers() {
}
close(ch)
delete(p.peers, pid)
for t, tmap := range p.topics {
if _, ok := tmap[pid]; ok {
delete(tmap, pid)
p.notifyLeave(t, pid)
}
}
p.rt.RemovePeer(pid)
if p.host.Network().Connectedness(pid) == network.Connected {
backoffDelay, err := p.deadPeerBackoff.updateAndGet(pid)
@ -709,20 +719,9 @@ func (p *PubSub) handleDeadPeers() {
log.Debugf("peer declared dead but still connected; respawning writer: %s", pid)
messages := make(chan *RPC, p.peerOutboundQueueSize)
messages <- p.getHelloPacket()
go p.handleNewPeerWithBackoff(p.ctx, pid, backoffDelay, messages)
p.peers[pid] = messages
continue
go p.handleNewPeerWithBackoff(p.ctx, pid, backoffDelay, messages)
}
delete(p.peers, pid)
for t, tmap := range p.topics {
if _, ok := tmap[pid]; ok {
delete(tmap, pid)
p.notifyLeave(t, pid)
}
}
p.rt.RemovePeer(pid)
}
}