aboutsummaryrefslogtreecommitdiffstats
path: root/docs/peers.md
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-05 00:29:56 +0100
committertv <tv@krebsco.de>2026-11-05 00:29:56 +0100
commit52e307d7b95dda735d1afbc4fe2dcffaa87512a4 (patch)
tree262c3fe7a18e6af82deacf7956640a3429a6822e /docs/peers.md
parent26d41bef0de3a0d8f25b62776e966ed464a34063 (diff)
delta from held heads
Diffstat (limited to 'docs/peers.md')
-rw-r--r--docs/peers.md5
1 files changed, 3 insertions, 2 deletions
diff --git a/docs/peers.md b/docs/peers.md
index eb1eb5c..70437ab 100644
--- a/docs/peers.md
+++ b/docs/peers.md
@@ -162,8 +162,9 @@ A sync message larger than 16 chunks (16 × `--blob-chunk`, 1 MiB by default) is
sent: it would be all or nothing, sent again whole after a lost copy, and on a slow link
may not arrive within the transport's delivery limit (Mycelium's five minutes). The sender takes it back and offers a
*delta* instead: the changes in the history of its heads but not of the peer's (as far
-as it knows them). The peer fetches them as a blob, in chunks, from the sender and any
-other peer holding those heads (every such peer produces the same bytes), loads them,
+as it knows them; of those, the ones it holds, and for any it lacks, the heads they
+share). The peer fetches them as a blob, in chunks, from the sender and any other peer
+holding both sets of heads (every such peer produces the same bytes), loads them,
and syncs on; the rest goes in ordinary messages. Until the peer answers, the sender
sends it nothing; if the answer is overdue, it offers again (the same offer, without
generating the message again, while neither side's heads moved). This is how a join without a