aboutsummaryrefslogtreecommitdiffstats
path: root/docs/MESHBAY_NODE_PROTOCOL.md
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-19 14:01:38 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-19 14:01:38 +0200
commitd2495a2c4b89fbbfc18cefec83ae96cabdd745e2 (patch)
tree463e4d11b1c742475aac07155818c9c64a1e43e5 /docs/MESHBAY_NODE_PROTOCOL.md
parentf8223293a211a87c92b1fed80f5ca53660f6b26c (diff)
parent933daccbcfde7705413d3a10db87d910c650ed42 (diff)
downloadmeshbay-d2495a2c4b89fbbfc18cefec83ae96cabdd745e2.tar.gz
Merge origin/main: the operator's upload ceiling beside the disk-thread work
One conflict, in §15.3's open list, and it was two changes agreeing rather than disagreeing: this side removed the rows for the third-party search bound and the node-announcement bound because both are now built (AV27, AV28), while the other side kept them and added a new one. Resolved by keeping what is genuinely still open — per-device revocation having no CLI — and leaving the two closed. `webrtc_server.py` merged without conflict but the two sides met inside one function: `_upload_chunk` gained the operator's `max_upload_gb` ceiling from there and the per-group lock and `off_disk` calls from here. Read back rather than trusted: the operator's ceiling now sits inside the critical section that keeps chunk ordering, and the unlink beside it goes to the disk thread with everything else. 2893 passed. The twelve `test_sticky_header.py[firefox]` setup errors are the open Firefox on this machine, as before.
Diffstat (limited to 'docs/MESHBAY_NODE_PROTOCOL.md')
-rw-r--r--docs/MESHBAY_NODE_PROTOCOL.md6
1 files changed, 3 insertions, 3 deletions
diff --git a/docs/MESHBAY_NODE_PROTOCOL.md b/docs/MESHBAY_NODE_PROTOCOL.md
index 51feacd..b2508c1 100644
--- a/docs/MESHBAY_NODE_PROTOCOL.md
+++ b/docs/MESHBAY_NODE_PROTOCOL.md
@@ -106,7 +106,7 @@ Identical on every transport:
| File chunk (plaintext) | 1 MiB | `CHUNK_SIZE` |
| Video segment (plaintext, before encryption) | 256 KiB | `STREAM_SEGMENT_SIZE` |
| Upload chunk sent by the browser | 48 KiB | fits the aiortc SCTP limit after msgpack overhead |
-| Upload total per file | 4 GiB | `MAX_UPLOAD_BYTES` |
+| Upload total per file | 8 GiB, operator-settable | `MAX_UPLOAD_BYTES`, `max_upload_gb` |
| Files one session may read at once **without a transfer lease** | 12 | `MAX_LEASELESS_IN_FLIGHT` (§11.2) |
The two-tier frame limit is not tidiness. A flat 64 MiB budget applied before
@@ -1483,7 +1483,7 @@ ct = AES-256-GCM(chunk_key).encrypt(nonce, plaintext) no AAD
| | root writable and available
| | destination resolves in-group
| | chunk_index == next expected
- | | running total <= 4 GiB
+ | | running total <= max_upload_gb
| | append to <stored_name>.part
|<- file_upload_ack {v, upload_id, chunk_index, |
| nonce, ct} ------------------------------------|
@@ -2227,7 +2227,7 @@ LP(x) = uint32be(len(x)) || x every field, no exceptions
| `PRE_HANDSHAKE_MAX_MSG` / `MAX_MSG` | 64 KiB / 64 MiB | `webrtc_server.py` |
| `CHUNK_SIZE` | 1 MiB | ” |
| `DOWNLOAD_BUFFER_HIGH` | 2 MiB | ” |
-| `MAX_UPLOAD_BYTES` | 4 GiB | ” |
+| `MAX_UPLOAD_BYTES` | 8 GiB, default only — `max_upload_gb` overrides it per node | ” |
| Download pipeline / chunk retry (client) | 8 in flight; 6 attempts, 1.5 s apart | `file-utils.js` |
| Upload chunk / window / send-buffer high water (client) | 48 KiB / 32 / 1 MiB | `transport.js` |
| `UPLOAD_ID_LEN` | 16 bytes, hex on the wire | `protocol.py` |