From 42423528522b23dc2dba4f6dc1d80c972a430e98 Mon Sep 17 00:00:00 2001 From: Anton Kaliaev Date: Sun, 4 Mar 2018 13:42:45 +0400 Subject: [PATCH] stop peer on decoding error --- blockchain/reactor.go | 3 ++- consensus/reactor.go | 2 +- evidence/reactor.go | 3 ++- mempool/reactor.go | 3 ++- p2p/pex/pex_reactor.go | 3 ++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/blockchain/reactor.go b/blockchain/reactor.go index 7462580b6..23d399426 100644 --- a/blockchain/reactor.go +++ b/blockchain/reactor.go @@ -175,7 +175,8 @@ func (bcR *BlockchainReactor) respondToPeer(msg *bcBlockRequestMessage, func (bcR *BlockchainReactor) Receive(chID byte, src p2p.Peer, msgBytes []byte) { _, msg, err := DecodeMessage(msgBytes, bcR.maxMsgSize()) if err != nil { - bcR.Logger.Error("Error decoding message", "err", err) + bcR.Logger.Error("Error decoding message", "src", src, "chId", chID, "msg", msg, "err", err, "bytes", msgBytes) + bcR.Switch.StopPeerForError(src, err) return } diff --git a/consensus/reactor.go b/consensus/reactor.go index b63793670..8318f2bb0 100644 --- a/consensus/reactor.go +++ b/consensus/reactor.go @@ -179,7 +179,7 @@ func (conR *ConsensusReactor) Receive(chID byte, src p2p.Peer, msgBytes []byte) _, msg, err := DecodeMessage(msgBytes) if err != nil { conR.Logger.Error("Error decoding message", "src", src, "chId", chID, "msg", msg, "err", err, "bytes", msgBytes) - // TODO punish peer? + conR.Switch.StopPeerForError(src, err) return } conR.Logger.Debug("Receive", "src", src, "chId", chID, "msg", msg) diff --git a/evidence/reactor.go b/evidence/reactor.go index 169a274d3..7eb6bfb65 100644 --- a/evidence/reactor.go +++ b/evidence/reactor.go @@ -84,7 +84,8 @@ func (evR *EvidenceReactor) RemovePeer(peer p2p.Peer, reason interface{}) { func (evR *EvidenceReactor) Receive(chID byte, src p2p.Peer, msgBytes []byte) { _, msg, err := DecodeMessage(msgBytes) if err != nil { - evR.Logger.Error("Error decoding message", "err", err) + evR.Logger.Error("Error decoding message", "src", src, "chId", chID, "msg", msg, "err", err, "bytes", msgBytes) + evR.Switch.StopPeerForError(src, err) return } evR.Logger.Debug("Receive", "src", src, "chId", chID, "msg", msg) diff --git a/mempool/reactor.go b/mempool/reactor.go index 58650a197..514347e94 100644 --- a/mempool/reactor.go +++ b/mempool/reactor.go @@ -73,7 +73,8 @@ func (memR *MempoolReactor) RemovePeer(peer p2p.Peer, reason interface{}) { func (memR *MempoolReactor) Receive(chID byte, src p2p.Peer, msgBytes []byte) { _, msg, err := DecodeMessage(msgBytes) if err != nil { - memR.Logger.Error("Error decoding message", "err", err) + memR.Logger.Error("Error decoding message", "src", src, "chId", chID, "msg", msg, "err", err, "bytes", msgBytes) + memR.Switch.StopPeerForError(src, err) return } memR.Logger.Debug("Receive", "src", src, "chId", chID, "msg", msg) diff --git a/p2p/pex/pex_reactor.go b/p2p/pex/pex_reactor.go index 193efc88d..441010aa7 100644 --- a/p2p/pex/pex_reactor.go +++ b/p2p/pex/pex_reactor.go @@ -167,7 +167,8 @@ func (r *PEXReactor) RemovePeer(p Peer, reason interface{}) { func (r *PEXReactor) Receive(chID byte, src Peer, msgBytes []byte) { _, msg, err := DecodeMessage(msgBytes) if err != nil { - r.Logger.Error("Error decoding message", "err", err) + r.Logger.Error("Error decoding message", "src", src, "chId", chID, "msg", msg, "err", err, "bytes", msgBytes) + r.Switch.StopPeerForError(src, err) return } r.Logger.Debug("Received message", "src", src, "chId", chID, "msg", msg)