aboutsummaryrefslogtreecommitdiffstats
path: root/docs/MESHBAY_NODE_PROTOCOL.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/MESHBAY_NODE_PROTOCOL.md')
-rw-r--r--docs/MESHBAY_NODE_PROTOCOL.md6
1 files changed, 6 insertions, 0 deletions
diff --git a/docs/MESHBAY_NODE_PROTOCOL.md b/docs/MESHBAY_NODE_PROTOCOL.md
index 5bf367b..0886a7e 100644
--- a/docs/MESHBAY_NODE_PROTOCOL.md
+++ b/docs/MESHBAY_NODE_PROTOCOL.md
@@ -159,6 +159,7 @@ Codes in use:
| Chat | `chat_too_large`, `chat_rate_limited` (§11.7) |
| Operator controls | `not_operator`, `too_many_pending`, `too_large` (§10.4) |
| Metadata | `transcode_not_applicable`, `tmdb_search_rate_limited` (§11.9) |
+| Moderation | `content_blocked` — a file the hub's content blocklist names, in a public group (§11.3) |
Everything else refuses with `detail` alone. A code is added when a client has a
different thing to *do* about the refusal — retry, re-authenticate, offer an update —
@@ -1565,6 +1566,11 @@ ct = AES-256-GCM(chunk_key).encrypt(nonce, plaintext) no AAD
* **A chunk that is not this shape aborts the download**, with an error. There is no
fallback that decodes it some other way: a client that guesses at a chunk it does not
recognise writes its guess into the file the person is saving.
+* **In a public group, a file the hub's content blocklist names is not served.** It is
+ left out of `index_sync` and `index_delta`, and `file_req` for it or for its
+ thumbnail, `stream_req`, `subtitle_req` and `audio_transcode_req` are refused with
+ `content_blocked`. The node syncs the list from the hub and applies pushed changes
+ (`MESHBAY_DESIGN.md` §7.5); private groups are never affected.
### 11.4 Upload