diff --git a/p2p/peer.go b/p2p/peer.go index e4482deae9..b421dc9467 100644 --- a/p2p/peer.go +++ b/p2p/peer.go @@ -323,12 +323,18 @@ func (p *Peer) readLoop(errc chan<- error) { for { msg, err := p.rw.ReadMsg() if err != nil { - errc <- err + select { + case <-p.closed: + case errc <- err: + } return } msg.ReceivedAt = time.Now() if err = p.handle(msg); err != nil { - errc <- err + select { + case <-p.closed: + case errc <- err: + } return } }