aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/dexon-foundation/dexon-consensus/core/agreement-mgr.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-04-15 22:24:30 +0800
committerWei-Ning Huang <w@byzantine-lab.io>2019-06-15 22:09:55 +0800
commitbdd8c3a9afc94bc27c3e64cbd7aa5acc5701ff5a (patch)
treedd92c1d35d2f9fe1fe2872cc6ed2da6301c8c3df /vendor/github.com/dexon-foundation/dexon-consensus/core/agreement-mgr.go
parent7e8e8deb67ca50d7c19ee08287720bd722de8485 (diff)
downloadgo-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.go38
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)
}