Merge pull request #169 from poanetwork/vk-term

Avoids cloning of Agreement::received_term
This commit is contained in:
Andreas Fackler 2018-07-27 10:19:40 +02:00 committed by GitHub
commit ae252028bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 1 deletions

View File

@ -505,7 +505,10 @@ impl<NodeUid: Clone + Debug + Ord> Agreement<NodeUid> {
self.estimated = Some(b);
let mut step = self.send_bval(b)?;
for (sender_id, b) in self.received_term.clone() {
// Create a temporary map of received TERM messages to avoid a second mutable access to
// `self`.
let received_term = replace(&mut self.received_term, BTreeMap::new());
for (sender_id, b) in received_term {
step.extend(self.handle_term(&sender_id, b)?);
if self.terminated {
return Ok(step);