corrected the count of AUX messages

This commit is contained in:
Vladimir Komendantskiy 2018-05-09 16:39:45 +01:00
parent b6a6bb35ea
commit 259d5369b0
2 changed files with 11 additions and 10 deletions

View File

@ -210,15 +210,17 @@ impl<NodeUid: Clone + Eq + Hash> Agreement<NodeUid> {
/// can, however, expect every good node to send an AUX value that will
/// eventually end up in our bin_values.
fn count_aux(&self) -> (usize, BTreeSet<bool>) {
let mut vals: BTreeSet<bool> = BTreeSet::new();
let mut count = 0;
let vals: BTreeSet<bool> = self.received_aux
.values()
.filter(|b| {
count += 1;
self.bin_values.contains(b)
})
.cloned()
.collect();
for b in self.received_aux.values() {
if self.bin_values.contains(b) {
vals.insert(b.clone());
}
}
(vals.len(), vals)
(count, vals)
}
/// Waits until at least (N f) AUX_r messages have been received, such that

View File

@ -179,8 +179,7 @@ impl<NodeUid: Clone + Debug + Display + Eq + Hash + Ord> CommonSubset<NodeUid> {
let mut result = Err(Error::NoSuchAgreementInstance);
// Send the message to the local instance of Agreement
if let Some(mut agreement_instance) = self.agreement_instances.get_mut(&element_proposer_id)
{
if let Some(agreement_instance) = self.agreement_instances.get_mut(&element_proposer_id) {
// Optional output of agreement and outgoing agreement
// messages to remote nodes.
result = if agreement_instance.terminated() {