aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-31 03:47:04 +0100
committertv <tv@krebsco.de>2026-10-31 03:47:04 +0100
commitc6d16c416fde16463d9fec2ab18f9fb929852dc7 (patch)
tree2b1859f7867e9b080e122289eb3ac2bed360a965 /src/swarm
parent509f98dac533d7565c057cc20d7ef14b89a72412 (diff)
unify source reset
Diffstat (limited to 'src/swarm')
-rw-r--r--src/swarm/source.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/swarm/source.rs b/src/swarm/source.rs
index d80e4d7..5e428f2 100644
--- a/src/swarm/source.rs
+++ b/src/swarm/source.rs
@@ -286,12 +286,18 @@ pub(crate) fn probe_due(state: &AppState, peer: &str, now: Instant) -> bool {
due
}
-/// The initial sync is done: no source any more, and the peers we held back only need
-/// to learn our heads now.
-pub(crate) fn finished(state: &AppState, from: &str) {
+/// No catch-up going on: no source, no head start, nobody avoided. When one ends, and
+/// before one starts (a rejoin: `Host::reset_initial_sync`).
+pub(crate) fn reset(state: &AppState) {
*lock(state) = None;
*lock_preference(state) = None;
*lock_avoided(state) = None;
+}
+
+/// The initial sync is done: no source any more, and the peers we held back only need
+/// to learn our heads now.
+pub(crate) fn finished(state: &AppState, from: &str) {
+ reset(state);
let state = state.clone();
let from = from.to_owned();
tokio::spawn(async move {