disallow None seal sigs
This commit is contained in:
parent
e4ff614966
commit
0f1eefc00d
@ -41,15 +41,16 @@ impl VoteCollector {
|
|||||||
self.votes.write().insert(message, voter)
|
self.votes.write().insert(message, voter)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn seal_signatures(&self, height: Height, round: Round, block_hash: Option<H256>) -> Option<SealSignatures> {
|
pub fn seal_signatures(&self, height: Height, round: Round, block_hash: H256) -> Option<SealSignatures> {
|
||||||
let guard = self.votes.read();
|
let guard = self.votes.read();
|
||||||
|
let bh = Some(block_hash);
|
||||||
let mut current_signatures = guard.keys()
|
let mut current_signatures = guard.keys()
|
||||||
.skip_while(|m| !m.is_block_hash(height, round, Step::Propose, block_hash));
|
.skip_while(|m| !m.is_block_hash(height, round, Step::Propose, bh));
|
||||||
current_signatures.next().map(|proposal| SealSignatures {
|
current_signatures.next().map(|proposal| SealSignatures {
|
||||||
proposal: proposal.signature,
|
proposal: proposal.signature,
|
||||||
votes: current_signatures
|
votes: current_signatures
|
||||||
.skip_while(|m| !m.is_block_hash(height, round, Step::Precommit, block_hash))
|
.skip_while(|m| !m.is_block_hash(height, round, Step::Precommit, bh))
|
||||||
.filter(|m| m.is_block_hash(height, round, Step::Precommit, block_hash))
|
.filter(|m| m.is_block_hash(height, round, Step::Precommit, bh))
|
||||||
.map(|m| m.signature.clone())
|
.map(|m| m.signature.clone())
|
||||||
.collect()
|
.collect()
|
||||||
})
|
})
|
||||||
@ -125,7 +126,7 @@ mod tests {
|
|||||||
proposal: signatures[0],
|
proposal: signatures[0],
|
||||||
votes: signatures[1..3].to_vec()
|
votes: signatures[1..3].to_vec()
|
||||||
};
|
};
|
||||||
assert_eq!(seal, collector.seal_signatures(h, r, bh).unwrap());
|
assert_eq!(seal, collector.seal_signatures(h, r, bh.unwrap()).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
Reference in New Issue
Block a user