aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport/mod.rs
Commit message (Collapse)AuthorAgeFilesLines
* roots: an epoch's root pinned, and named in every handshaketv4 days1-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* swarm: changes taken unjudged, dropped (REFUSALS)tv5 days1-0/+20
| | | | | | | | | A node refusing changes a peer brought tells it which broke a rule; the peer judges them itself, and if its rules refuse them too, drops them with all built on them (its document forked without them, a fresh actor), quarantining its own writes among them. Wire version 42. Auth plan M6 (rejoin on taint).
* signatures: on their own (SIGNATURES)tv5 days1-0/+16
| | | | | | | Signatures no sync message took go on their own within a second, to each peer not sent them yet (wire version bumped). Auth plan M5.
* signatures: with sync messagestv5 days1-0/+4
| | | | | | | Sync messages carry, for each actor's writes, the latest signature the sender checked; the receiver checks it once it holds the change. Auth plan M5.
* dashboard: without LINKS; LINKS removedtv5 days1-97/+0
| | | | | | | | | The dashboard reads every member's links from the members themselves; LINKS and LINKS_REPLY, swarm::links and their wire tags go (wire version bumped). Nodes the browser can't reach are drawn from what the reachable ones measure. Auth plan M3.
* HyParView (slim)tv6 days1-0/+39
|
* plumtreetv6 days1-0/+23
|
* indirect probestv6 days1-0/+40
|
* strangers messages smalltv7 days1-0/+64
|
* round trips in treestv8 days1-0/+5
|
* push by defaulttv8 days1-4/+4
|
* pushed heads as tipstv8 days1-1/+2
|
* push changes experimenttv8 days1-0/+9
|
* suspect pathstv8 days1-0/+7
|
* deflate blob chunkstv8 days1-0/+12
|
* deflate blob chunkstv8 days1-0/+2
|
* epoch tag in synctv8 days1-5/+64
|
* no swarm ID in synctv8 days1-1/+0
|
* dashboard: swarm-wide epoch shinetv8 days1-0/+4
|
* delta from held headstv8 days1-2/+2
|
* time blob messagestv8 days1-0/+3
|
* hop delaystv8 days1-0/+3
|
* any message taken as deliveredtv8 days1-0/+5
|
* announcements answered when lackingtv9 days1-2/+2
| | | | | | | A neighbour now answers an announcement only if it lacks some of the announced heads. Heads that merely differ are no longer enough, since they do while writes go on. The check reads the document, so it runs off the message consumer, as the pull check already does.
* unanswered members not reachedtv10 days1-1/+1
|
* replace eager links by treestv10 days1-8/+0
|
* add writer treestv10 days1-0/+4
|
* measure 2-hop neighbourhoodtv10 days1-0/+4
|
* dashboard: show eager links on the maptv10 days1-0/+4
|
* introduce eager linkstv10 days1-0/+4
|
* announcements answered only if heads differtv10 days1-0/+4
|
* swarm: relay links messagestv10 days1-2/+21
|
* probe when reachabletv11 days1-0/+7
|
* introduce per-transport sync reply timeouttv11 days1-0/+7
|
* bootstrap: replace pull by progress notifytv11 days1-0/+6
|
* config: use individual transport enable flagstv12 days1-1/+1
|
* links report downtv12 days1-0/+3
|
* move SyncSession to documenttv12 days1-2/+2
|
* move changes as bytes to documenttv12 days1-1/+1
|
* sync messages are bytes outside the sessiontv12 days1-15/+4
| | | | | | | | SyncPayload is now an opaque byte container in transport. SyncSession::generate returns the encoded payload, state::decode_sync(&payload) decodes it off the document lock (as before), and receive takes the decoded message, which is a type only the session can open. transport/mod.rs no longer imports Automerge.
* rename AutoMerge to Documenttv12 days1-1/+2
|
* links replies carry clock offsetstv12 days1-0/+3
|
* calculate peer clock drifttv13 days1-0/+7
|
* pong carries timetv13 days1-5/+9
|
* allow links subscriptionstv13 days1-0/+4
|
* farewell means dormanttv13 days1-0/+3
|
* links answers connection typetv13 days1-0/+2
|
* dashboard: show all links between peerstv13 days1-0/+12
|
* add links messagestv13 days1-0/+50
| | | | | | | | | Introduce two new wire messages, LINKS and LINKS_REPLY (swarm::links). A member answers with its links: for each peer, the transport, whether it’s relayed, the RTT, and whether it’s dormant. It answers members only, at most every 5 s. This bumps wire::VERSION to 7. Every build answers, with or without the feature, so every node needs this patch before the map shows anything beyond its own node.
* move transport config checks to respective modulestv13 days1-0/+21
|