aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-06 05:29:17 +0100
committertv <tv@krebsco.de>2026-11-06 05:29:17 +0100
commit7f2d5be7a5cd4204fe0ec933fe4d99134607e1b3 (patch)
tree49bc403457c64113890e4ca2c16e307d7d8adbc1 /docs
parent6f51f8ee9624ecb15d9c9ad6656e69056e245e7b (diff)
working links recorded
Diffstat (limited to 'docs')
-rw-r--r--docs/peers.md10
1 files changed, 10 insertions, 0 deletions
diff --git a/docs/peers.md b/docs/peers.md
index f19e699..0b31556 100644
--- a/docs/peers.md
+++ b/docs/peers.md
@@ -358,6 +358,16 @@ pair exchanges changes it sends no keepalives, and so no STATUS, however long th
writes go on. `GET /peers` shows it
(`localReaches`, and `reaches` per peer).
+Where its links differ from the member list's graph for a while, a member records so in
+its registry entry ([`swarm/working_links.rs`](../src/swarm/working_links.rs), `links`):
+its neighbours by the graph it doesn't reach (`unreached`), once down for four keepalive
+intervals, and its neighbours it reaches that the graph doesn't link it to (`reached`:
+a ring going round a member it doesn't reach, a member reaching out from behind NAT),
+once up for one; each comes out again after the
+other hold. On a stable swarm the entry has none. A member that went away is recorded
+as unreached by its neighbours (they can't tell it from a link that broke), and taken
+out once they reach it again.
+
A writer's changes pass on along its tree ([`swarm/tree.rs`](../src/swarm/tree.rs)), the same on every node:
built on the graph the member list gives (as if every member reached every other) and
on whom each member says it reaches. Members are ordered by their distance from the