aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/transport-upload.js
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-10-09 18:23:52 +0200
committerChristophe Besson <cbesson@gmail.com>2026-10-09 18:23:56 +0200
commitc85c7f48e8f29923038d4c90cc1a6f9b8bcd7673 (patch)
tree10a5a62416bafd58c891e1fff290036bb75c7318 /packages/meshbay-hub/src/meshbay_hub/static/transport-upload.js
parentfbc2c5d86aed931be38c5fccfff75190eb4d16d1 (diff)
downloadmeshbay-c85c7f48e8f29923038d4c90cc1a6f9b8bcd7673.tar.gz
feat(node): refuse an upload on a full disk with a stated reason
Nothing on the upload path knew about ENOSPC: a write that found no room raised out of the handler, the catch-all answered "Request failed", and the .part stayed behind holding the space that had run out. The node now refuses with `disk_full` at chunk 0 when the announced size would leave less than 1 GiB free, and at any write that fails with ENOSPC/EDQUOT, dropping the partial. The client carries the code on the error and the transfers panel says "The node's disk is full" in every catalogue. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/transport-upload.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/transport-upload.js4
1 files changed, 4 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/transport-upload.js b/packages/meshbay-hub/src/meshbay_hub/static/transport-upload.js
index a8f039d..e11613d 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/transport-upload.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/transport-upload.js
@@ -80,6 +80,10 @@ extendTransport(class {
// this client did before there was anything to ask.
if (answerProbe(0)) return;
failure = new Error(msg.detail || 'Upload refused');
+ // Carried so a caller can tell a refusal it can act on (`disk_full`:
+ // stop, nothing will fit until the operator makes room) from one it
+ // cannot. The detail is English; whoever shows it translates by code.
+ if (msg.code) failure.code = msg.code;
wake();
return;
}