diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2019-04-15 22:24:30 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@byzantine-lab.io> | 2019-06-15 22:09:55 +0800 |
commit | bdd8c3a9afc94bc27c3e64cbd7aa5acc5701ff5a (patch) | |
tree | dd92c1d35d2f9fe1fe2872cc6ed2da6301c8c3df /vendor/github.com/dexon-foundation/dexon-consensus/core/agreement-mgr.go | |
parent | 7e8e8deb67ca50d7c19ee08287720bd722de8485 (diff) | |
download | go-tangerine-bdd8c3a9afc94bc27c3e64cbd7aa5acc5701ff5a.tar go-tangerine-bdd8c3a9afc94bc27c3e64cbd7aa5acc5701ff5a.tar.gz go-tangerine-bdd8c3a9afc94bc27c3e64cbd7aa5acc5701ff5a.tar.bz2 go-tangerine-bdd8c3a9afc94bc27c3e64cbd7aa5acc5701ff5a.tar.lz go-tangerine-bdd8c3a9afc94bc27c3e64cbd7aa5acc5701ff5a.tar.xz go-tangerine-bdd8c3a9afc94bc27c3e64cbd7aa5acc5701ff5a.tar.zst go-tangerine-bdd8c3a9afc94bc27c3e64cbd7aa5acc5701ff5a.zip |
vendor: sync to latest core
Diffstat (limited to 'vendor/github.com/dexon-foundation/dexon-consensus/core/agreement-mgr.go')
-rw-r--r-- | vendor/github.com/dexon-foundation/dexon-consensus/core/agreement-mgr.go | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/vendor/github.com/dexon-foundation/dexon-consensus/core/agreement-mgr.go b/vendor/github.com/dexon-foundation/dexon-consensus/core/agreement-mgr.go index f65903d25..17def6747 100644 --- a/vendor/github.com/dexon-foundation/dexon-consensus/core/agreement-mgr.go +++ b/vendor/github.com/dexon-foundation/dexon-consensus/core/agreement-mgr.go @@ -271,34 +271,48 @@ func (mgr *agreementMgr) notifyRoundEvents(evts []utils.RoundEventParam) error { return nil } -func (mgr *agreementMgr) processVote(v *types.Vote) (err error) { - if !mgr.recv.isNotary { - return nil - } - if mgr.voteFilter.Filter(v) { - return nil - } - if v.Position.Round == mgr.curRoundSetting.round { - if _, exist := mgr.curRoundSetting.dkgSet[v.ProposerID]; !exist { +func (mgr *agreementMgr) checkProposer( + round uint64, proposerID types.NodeID) error { + if round == mgr.curRoundSetting.round { + if _, exist := mgr.curRoundSetting.dkgSet[proposerID]; !exist { return ErrNotInNotarySet } - } else if v.Position.Round == mgr.curRoundSetting.round+1 { - setting := mgr.generateSetting(v.Position.Round) + } else if round == mgr.curRoundSetting.round+1 { + setting := mgr.generateSetting(round) if setting == nil { return ErrConfigurationNotReady } - if _, exist := setting.dkgSet[v.ProposerID]; !exist { + if _, exist := setting.dkgSet[proposerID]; !exist { return ErrNotInNotarySet } } + return nil +} + +func (mgr *agreementMgr) processVote(v *types.Vote) (err error) { + if !mgr.recv.isNotary { + return nil + } + if mgr.voteFilter.Filter(v) { + return nil + } + if err := mgr.checkProposer(v.Position.Round, v.ProposerID); err != nil { + return err + } if err = mgr.baModule.processVote(v); err == nil { mgr.baModule.updateFilter(mgr.voteFilter) mgr.voteFilter.AddVote(v) } + if err == ErrSkipButNoError { + err = nil + } return } func (mgr *agreementMgr) processBlock(b *types.Block) error { + if err := mgr.checkProposer(b.Position.Round, b.ProposerID); err != nil { + return err + } return mgr.baModule.processBlock(b) } |