From 797e5058c6dbfa3c668d6568144431aea03f6256 Mon Sep 17 00:00:00 2001 From: Sonic Date: Wed, 27 Mar 2019 14:23:19 +0800 Subject: dex: fix missing trie node when fast syncing (#301) * dex: don't panic when we don't have gov state peer requested * dex: use correct head block Since we are fast syncing, we probably don't have body, receipt, state --- dex/handler.go | 5 +++-- dex/protocol.go | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dex/handler.go b/dex/handler.go index 84170e54b..ec5704103 100644 --- a/dex/handler.go +++ b/dex/handler.go @@ -361,7 +361,7 @@ func (pm *ProtocolManager) handle(p *peer) error { // Execute the Ethereum handshake var ( genesis = pm.blockchain.Genesis() - head = pm.blockchain.CurrentHeader() + head = pm.blockchain.CurrentBlock().Header() hash = head.Hash() number = head.Number.Uint64() ) @@ -953,7 +953,8 @@ func (pm *ProtocolManager) handleMsg(p *peer) error { } govState, err := pm.blockchain.GetGovStateByHash(hash) if err != nil { - panic(err) + p.Log().Debug("Invalid gov state msg", "hash", hash.String(), "err", err) + return errResp(ErrInvalidGovStateMsg, "hash=%v", hash.String()) } return p.SendGovState(govState) case msg.Code == GovStateMsg: diff --git a/dex/protocol.go b/dex/protocol.go index e09829cc8..639925265 100644 --- a/dex/protocol.go +++ b/dex/protocol.go @@ -110,6 +110,7 @@ const ( ErrNoStatusMsg ErrExtraStatusMsg ErrSuspendedPeer + ErrInvalidGovStateMsg ) const ( -- cgit v1.2.3