aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/peer/handshake.rs
Commit message (Collapse)AuthorAgeFilesLines
* roots: an epoch's root pinned, and named in every handshaketv3 days1-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Review 2, N7, the care it raised: a joining node's empty document took as the first epoch's root whatever dependency-less change came first, from whichever peer it joined through; the first epoch's ID is all zeros, so nothing pinned it. A remake's epoch has its ID, the snapshot change's hash, which the rules hold its root to. * Every node names its epoch's root in HELLO and HELLO_REPLY (the epoch's ID for a remake's, its genesis change for the first; wire version 45). A node whose document starts from another root of the same epoch refuses the handshake, logging it: another history under the swarm's ID, a forged root or a genesis started again. * A joining node with an empty document takes as its root only the one it was given (--genesis-root, new), else the one its peers name, and none while they name different ones (access::screen::RootPin, kept in Screening across documents): one peer hands it another root only if it is all the joiner hears, or never, with --genesis-root. A root refused is listed with the refused, what builds on it with it. * The genesis node logs the root (`The swarm's root`); GET /admin/epochs shows it (`root`). A genesis started again under a remembered swarm ID used to merge with the nodes of it still running; they now refuse it (another root), and the docs say to join them with seeds instead. The epoch's identity stays as it is (generation 0 all zeros): records and epoch metadata name it so, and every comparison of epochs with them.
* handshakes countedtv5 days1-0/+7
|
* strangers messages smalltv5 days1-0/+4
|
* retry new peers before probingtv8 days1-1/+1
|
* probe list memberstv8 days1-5/+6
|
* probe when reachabletv10 days1-0/+24
|
* probe wakes peer workertv10 days1-2/+3
|
* peer worker sleeps until deadline, not fixed timetv10 days1-3/+5
|
* centralize call to topology_changetv11 days1-9/+6
|
* unify request_sync logictv11 days1-4/+1
|
* immediately probe dormant members found in hellostv12 days1-4/+37
| | | | | | Instead of waiting for its regular timer, reprobe dormant members found in hello reply messages on the next worker tick. With this a partition gets reconnected quickly as soon as the first pair reconnects.
* track unlisted memberstv14 days1-0/+2
|
* peers from member list start as unknowntv14 days1-2/+2
|
* admit nodeId and addresses in the APItv2026-10-271-1/+8
|
* introduce addressestv2026-10-271-3/+25
|
* talk about "transport" unless mycelium is meanttv2026-10-271-1/+1
|
* make clippy happy againtv2026-10-261-16/+16
|
* read stamps sync and lock freetv2026-10-261-2/+2
|
* unreachability doesn't expiretv2026-10-261-4/+1
|
* number handshakestv2026-10-261-6/+18
| | | | This prevents late hellos from resetting the session.
* send bounded peer liststv2026-10-261-6/+31
|
* split peer moduletv2026-10-261-0/+336