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] Updated dependencies
- [fixed] Fixed problem with IPv4 addresses in listen option
- [fixed] Fixed periodic broadcast messages in switch mode
### 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) {
let mut removed_claim = false;
for entry in &mut self.claims {
if entry.peer == peer {
let pos = claims.iter().position(|r| r == &entry.claim);
@ -58,16 +59,19 @@ impl<TS: TimeSource> ClaimTable<TS> {
break;
}
} else {
entry.timeout = 0
entry.timeout = 0;
removed_claim = true;
}
}
}
for claim in claims {
self.claims.push(ClaimEntry { peer, claim, timeout: TS::now() + self.claim_timeout as Time })
}
for entry in self.cache.values_mut() {
if entry.peer == peer {
entry.timeout = 0
if removed_claim {
for entry in self.cache.values_mut() {
if entry.peer == peer {
entry.timeout = 0
}
}
}
self.housekeep()