Fix repeating broadcasts

This commit is contained in:
Dennis Schwerdel 2021-12-20 08:50:12 +01:00
parent 2dc774196e
commit 50a6c01e93
2 changed files with 9 additions and 4 deletions

View File

@ -10,6 +10,7 @@ This project follows [semantic versioning](http://semver.org).
- [changed] Changed Rust version to 1.57.0 - [changed] Changed Rust version to 1.57.0
- [changed] Updated dependencies - [changed] Updated dependencies
- [fixed] Fixed problem with IPv4 addresses in listen option - [fixed] Fixed problem with IPv4 addresses in listen option
- [fixed] Fixed periodic broadcast messages in switch mode
### v2.2.0 (2021-04-06) ### v2.2.0 (2021-04-06)

View File

@ -48,6 +48,7 @@ impl<TS: TimeSource> ClaimTable<TS> {
} }
pub fn set_claims(&mut self, peer: SocketAddr, mut claims: RangeList) { pub fn set_claims(&mut self, peer: SocketAddr, mut claims: RangeList) {
let mut removed_claim = false;
for entry in &mut self.claims { for entry in &mut self.claims {
if entry.peer == peer { if entry.peer == peer {
let pos = claims.iter().position(|r| r == &entry.claim); let pos = claims.iter().position(|r| r == &entry.claim);
@ -58,16 +59,19 @@ impl<TS: TimeSource> ClaimTable<TS> {
break; break;
} }
} else { } else {
entry.timeout = 0 entry.timeout = 0;
removed_claim = true;
} }
} }
} }
for claim in claims { for claim in claims {
self.claims.push(ClaimEntry { peer, claim, timeout: TS::now() + self.claim_timeout as Time }) self.claims.push(ClaimEntry { peer, claim, timeout: TS::now() + self.claim_timeout as Time })
} }
for entry in self.cache.values_mut() { if removed_claim {
if entry.peer == peer { for entry in self.cache.values_mut() {
entry.timeout = 0 if entry.peer == peer {
entry.timeout = 0
}
} }
} }
self.housekeep() self.housekeep()