Skip to content

Commit 970e6d5

Browse files
authored
Merge pull request #66 from getamis/feature/node_not_start_engine
consensus/pbft: start engine failed if i'm not in validator set
2 parents cac14b6 + d3874df commit 970e6d5

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

consensus/pbft/backends/simple/engine.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ var (
4141
errUnknownBlock = errors.New("unknown block")
4242
// errUnauthorized is returned if a header is signed by a non authorized entity.
4343
errUnauthorized = errors.New("unauthorized")
44+
// errNotInValidatorSet is returned if I'm not in validator set but try to start engine
45+
errNotInValidatorSet = errors.New("not in validator set")
4446
// errInvalidDifficulty is returned if the difficulty of a block is not 1
4547
errInvalidDifficulty = errors.New("invalid difficulty")
4648
// errNotProposer is returned when I'm not a proposer
@@ -415,6 +417,9 @@ func (sb *simpleBackend) Start(chain consensus.ChainReader, inserter func(block
415417
if err := sb.initValidatorSet(chain); err != nil {
416418
return err
417419
}
420+
if _, v := sb.valSet.GetByAddress(sb.address); v == nil {
421+
return errNotInValidatorSet
422+
}
418423
sb.chain = chain
419424
sb.inserter = inserter
420425
sb.core = pbftCore.New(sb, sb.config)
@@ -435,7 +440,10 @@ func (sb *simpleBackend) Start(chain consensus.ChainReader, inserter func(block
435440

436441
// Stop implements consensus.PBFT.Stop
437442
func (sb *simpleBackend) Stop() error {
438-
return sb.core.Stop()
443+
if sb.core != nil {
444+
return sb.core.Stop()
445+
}
446+
return nil
439447
}
440448

441449
func (sb *simpleBackend) initValidatorSet(chain consensus.ChainReader) error {

0 commit comments

Comments
 (0)