aboutsummaryrefslogtreecommitdiffstats
path: root/docs/peers.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/peers.md')
-rw-r--r--docs/peers.md12
1 files changed, 7 insertions, 5 deletions
diff --git a/docs/peers.md b/docs/peers.md
index 377d8aa..127b2ad 100644
--- a/docs/peers.md
+++ b/docs/peers.md
@@ -316,11 +316,13 @@ member's parent is the neighbour it reaches that comes before it, the closest to
writer first, then one that reaches closer, then by pair score. Coming before rules out
cycles; taking only one it reaches routes around links that don't work: where a writer
behind NAT reaches a single member, that one comes first among those as far from it,
-and the others take it as their parent. A sync message that passes a
-writer's change on says whose; whoever applies one sends it at once to its children in
-that writer's tree, however it got it. So does one that had the change already: it may
-have come another way first without saying whose (with an answer to one of its own
-messages, say), and then nothing was passed on. Its announcement round then goes only to the
+and the others take it as their parent. Whose a change is, its author says (every
+node writes as itself, its node ID): whoever applies changes sends them at once to its
+children in each of their writers' trees, however they came (along a tree, with an
+answer to one of its own messages, pulled). A sync message along a tree also says
+whose; one that had those changes already passes them on too (they may have come
+another way first, when it wasn't yet anyone's turn to pass them on), so a child that
+lacks them still gets them. Its announcement round then goes only to the
neighbours the tree leaves out (no member they reach comes before them, or the member
list's graph doesn't have them); all others are told in a slow round 2 s later, which
catches what a tree missed (a parent that went away, nodes whose views of the tree