diff --git a/eth/handler.go b/eth/handler.go index f0411bc420..33d59356f8 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -847,6 +847,11 @@ func (pm *ProtocolManager) handleMsg(p *peer) error { pm.lendingpool.AddRemotes(txs) } case msg.Code == VoteMsg: + // VoteMsg arrived, make sure we have a valid and fresh chain to handle them + if atomic.LoadUint32(&pm.acceptTxs) == 0 { + break + } + var vote types.Vote if err := msg.Decode(&vote); err != nil { return errResp(ErrDecode, "msg %v: %v", msg, err) @@ -864,6 +869,11 @@ func (pm *ProtocolManager) handleMsg(p *peer) error { } case msg.Code == TimeoutMsg: + // TimeoutMsg arrived, make sure we have a valid and fresh chain to handle them + if atomic.LoadUint32(&pm.acceptTxs) == 0 { + break + } + var timeout types.Timeout if err := msg.Decode(&timeout); err != nil { return errResp(ErrDecode, "msg %v: %v", msg, err) @@ -883,6 +893,11 @@ func (pm *ProtocolManager) handleMsg(p *peer) error { } case msg.Code == SyncInfoMsg: + // SyncInfoMsg arrived, make sure we have a valid and fresh chain to handle them + if atomic.LoadUint32(&pm.acceptTxs) == 0 { + break + } + var syncInfo types.SyncInfo if err := msg.Decode(&syncInfo); err != nil { return errResp(ErrDecode, "msg %v: %v", msg, err)