dsh-zen-remote 2.2.4 → 2.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +15 -3
- package/README.md +12 -4
- package/README.zh-CN.md +12 -4
- package/docs/interface.md +18 -1
- package/docs/plugin-bridge.md +1 -1
- package/docs/remote-access.en.md +10 -3
- package/docs/remote-access.md +10 -3
- package/lib/adapters/dsh-better-sidebar/index.js +28 -7
- package/lib/adapters/dsh-better-sidebar/index.js.map +1 -1
- package/lib/adapters/dsh-better-sidebar/methods.js +2 -0
- package/lib/adapters/dsh-better-sidebar/methods.js.map +1 -1
- package/lib/client-routes.js +3 -0
- package/lib/client-routes.js.map +1 -1
- package/lib/client.js +1164 -193
- package/lib/fetch-route-intercept.js +1 -1
- package/lib/index.js +73 -16
- package/lib/index.js.map +1 -1
- package/lib/intercept.js +13 -0
- package/lib/intercept.js.map +1 -1
- package/lib/invoke-binary.js +8 -2
- package/lib/invoke-binary.js.map +1 -1
- package/lib/lan-gate-server.cjs +109 -2
- package/lib/owner-peer.js +23 -0
- package/lib/owner-peer.js.map +1 -1
- package/lib/plugin-adapter-core.js +2 -2
- package/lib/relay-access.js +24 -2
- package/lib/relay-access.js.map +1 -1
- package/lib/relay-client.js +2 -2
- package/lib/relay-server.js +103 -100
- package/lib/relay-server.js.map +1 -1
- package/lib/types/adapters/dsh-better-sidebar/index.d.ts +1 -1
- package/lib/types/adapters/dsh-better-sidebar/index.d.ts.map +1 -1
- package/lib/types/adapters/dsh-better-sidebar/methods.d.ts.map +1 -1
- package/lib/types/client/MobileAttachButton.d.ts +5 -2
- package/lib/types/client/MobileAttachButton.d.ts.map +1 -1
- package/lib/types/client/MobileAttachChips.d.ts.map +1 -1
- package/lib/types/client/MobileHome.d.ts.map +1 -1
- package/lib/types/client/RemoteFileDownload.d.ts +57 -0
- package/lib/types/client/RemoteFileDownload.d.ts.map +1 -0
- package/lib/types/client/attach-upload.d.ts +32 -0
- package/lib/types/client/attach-upload.d.ts.map +1 -1
- package/lib/types/client/effects/remote-drop.d.ts +27 -0
- package/lib/types/client/effects/remote-drop.d.ts.map +1 -0
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +11 -0
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/remote-file-save.d.ts +112 -0
- package/lib/types/client/remote-file-save.d.ts.map +1 -0
- package/lib/types/client/settings/SettingsSection.d.ts.map +1 -1
- package/lib/types/client/styles/compat.css.d.ts +1 -1
- package/lib/types/client/styles/compat.css.d.ts.map +1 -1
- package/lib/types/client/styles/header.css.d.ts +1 -1
- package/lib/types/client/styles/header.css.d.ts.map +1 -1
- package/lib/types/client/styles/home.css.d.ts +1 -1
- package/lib/types/client/styles/home.css.d.ts.map +1 -1
- package/lib/types/client/styles/layout.css.d.ts +1 -1
- package/lib/types/client/styles/layout.css.d.ts.map +1 -1
- package/lib/types/client/styles/remote-session.css.d.ts +1 -1
- package/lib/types/client/styles/remote-session.css.d.ts.map +1 -1
- package/lib/types/client-data/remote-drop.d.ts +99 -0
- package/lib/types/client-data/remote-drop.d.ts.map +1 -0
- package/lib/types/client-data/settings-form.d.ts +7 -0
- package/lib/types/client-data/settings-form.d.ts.map +1 -1
- package/lib/types/client-routes.d.ts +6 -0
- package/lib/types/client-routes.d.ts.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/intercept.d.ts.map +1 -1
- package/lib/types/invoke-binary.d.ts +4 -1
- package/lib/types/invoke-binary.d.ts.map +1 -1
- package/lib/types/owner-peer.d.ts +9 -0
- package/lib/types/owner-peer.d.ts.map +1 -1
- package/lib/types/plugin-adapter-core.d.ts +1 -1
- package/lib/types/relay-access.d.ts.map +1 -1
- package/lib/types/relay-server.d.ts +10 -7
- package/lib/types/relay-server.d.ts.map +1 -1
- package/package.json +37 -37
- package/pwa/inject.js +20 -9
- package/pwa/sw.js +97 -21
- package/scripts/check-attach-upload.mjs +37 -0
- package/scripts/check-remote-drop.mjs +114 -0
- package/scripts/check-settings-form.mjs +3 -2
- package/scripts/check-upload-endpoint.mjs +14 -3
- package/src/adapters/dsh-better-sidebar/index.ts +27 -7
- package/src/adapters/dsh-better-sidebar/methods.ts +2 -0
- package/src/client/MobileAttachButton.tsx +14 -9
- package/src/client/MobileAttachChips.tsx +4 -0
- package/src/client/MobileHome.tsx +79 -12
- package/src/client/RemoteFileDownload.tsx +173 -0
- package/src/client/attach-upload.ts +47 -0
- package/src/client/effects/remote-drop.ts +269 -0
- package/src/client/index.tsx +47 -0
- package/src/client/locales.ts +32 -0
- package/src/client/remote-file-save.ts +232 -0
- package/src/client/settings/SettingsSection.tsx +61 -1
- package/src/client/styles/compat.css.ts +43 -12
- package/src/client/styles/header.css.ts +63 -15
- package/src/client/styles/home.css.ts +39 -1
- package/src/client/styles/layout.css.ts +24 -7
- package/src/client/styles/remote-session.css.ts +38 -0
- package/src/client-data/remote-drop.ts +127 -0
- package/src/client-data/settings-form.ts +10 -0
- package/src/client-routes.ts +8 -0
- package/src/fetch-route-intercept.ts +1 -1
- package/src/index.ts +71 -18
- package/src/intercept.ts +13 -0
- package/src/invoke-binary.ts +8 -2
- package/src/owner-peer.ts +32 -0
- package/src/plugin-adapter-core.ts +2 -2
- package/src/relay-access.ts +24 -2
- package/src/relay-client.ts +2 -2
- package/src/relay-server.ts +114 -90
package/lib/relay-access.js
CHANGED
|
@@ -120,8 +120,7 @@
|
|
|
120
120
|
* account management, settings, credentials, the methods located by other
|
|
121
121
|
* ids (`schedule/update|delete|history`, `goals/create|complete`,
|
|
122
122
|
* `fileUploads/list|resolve`, `agentPresets/list|read`,
|
|
123
|
-
* `permissionPresets/*`, `
|
|
124
|
-
* refused by default.
|
|
123
|
+
* `permissionPresets/*`, `dynamicCordisRunner/*`) — is refused by default.
|
|
125
124
|
*
|
|
126
125
|
* T31 registered the five session-creating / agent-scoped calls after
|
|
127
126
|
* verifying their ownership story (see the field notes above): creations
|
|
@@ -193,6 +192,29 @@ const RELAY_METHODS = {
|
|
|
193
192
|
'workspaceFiles/read': { fields: ['workspaceFileScopeId'] },
|
|
194
193
|
'workspaceFiles/readBytes': { fields: ['workspaceFileScopeId'] },
|
|
195
194
|
'workspaceFiles/stat': { fields: ['workspaceFileScopeId'] },
|
|
195
|
+
// Office document preview (2.2.6, remote Word/Excel/PPT). The document
|
|
196
|
+
// preview's Office renderer does NOT convert on the client: it asks the
|
|
197
|
+
// HOST's LibreOffice to turn doc/docx/xls/xlsx/ppt/pptx into PDF
|
|
198
|
+
// (RT dsh-client-ui-sidebar-documentpreview lib/client.js ~6101: the
|
|
199
|
+
// office face is built from `ctx.remote.officeToPdf` +
|
|
200
|
+
// `ctx.remote.workspaceFiles`), so a remote session without this entry
|
|
201
|
+
// fails the preview with `remote-unsupported` — the exact
|
|
202
|
+
// 「此功能暂不支持远程会话」 a client sees when it opens a produced Word
|
|
203
|
+
// file. `render` carries the SAME `workspaceFileScope` lookup as the
|
|
204
|
+
// workspaceFiles group (RT dsh-office-to-pdf lib/typert.remote-client.js:
|
|
205
|
+
// parameter 0 name `workspaceFileScope`, wire `workspaceFileScopeId`,
|
|
206
|
+
// typeSymbol SessionId) and reads under the same permissive rule
|
|
207
|
+
// (absolute paths anywhere the server process can read) — the trust
|
|
208
|
+
// premise accepted above for previews applies unchanged.
|
|
209
|
+
// `officeToPdf/generation` (zero-arity, RT same file `parameters: []`)
|
|
210
|
+
// stays UNREGISTERED on purpose: a field-less call carries no virtual id,
|
|
211
|
+
// so the client's interception never routes it here — it answers from the
|
|
212
|
+
// LOCAL renderer, which is all its cache-invalidation use needs.
|
|
213
|
+
// The RESULT of render carries `data: Uint8Array` (complete PDF bytes), so
|
|
214
|
+
// the method is ALSO registered in invoke-binary.ts's
|
|
215
|
+
// INVOKE_BINARY_RESULT_METHODS — without that marker the JSON channel
|
|
216
|
+
// flattens the typed array and the client's strict codec rejects it.
|
|
217
|
+
'officeToPdf/render': { fields: ['workspaceFileScopeId'] },
|
|
196
218
|
// terminal (T41a) — opens SERVER-side by explicit user request (SPEC story
|
|
197
219
|
// 45). What the client gets is a shell running AS THE SERVER USER, WITHOUT
|
|
198
220
|
// the agent sandbox or approval restrictions (RT dsh-api-terminal-controller
|
package/lib/relay-access.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-access.js","sourceRoot":"","sources":["../src/relay-access.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"relay-access.js","sourceRoot":"","sources":["../src/relay-access.ts"],"names":[],"mappings":"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"}
|
package/lib/relay-client.js
CHANGED
|
@@ -67,7 +67,7 @@ const DEFAULT_IDLE_TIMEOUT_MS = 45_000;
|
|
|
67
67
|
const DEFAULT_REQUEST_TIMEOUT_MS = 15_000;
|
|
68
68
|
/**
|
|
69
69
|
* The invoke round-trip budget (T31-fix): the configured request timeout
|
|
70
|
-
* plus 2 s per MiB of request body, capped at
|
|
70
|
+
* plus 2 s per MiB of request body, capped at fifteen minutes. The large
|
|
71
71
|
* bodies are the prompt routes' INLINE images — `session/prompt` /
|
|
72
72
|
* `subagents/prompt` content blocks carry base64 `image` data, one image up
|
|
73
73
|
* to 20 MiB by default (`maxImageBytes`, dsh-attachment-local) or ~27 MiB
|
|
@@ -75,7 +75,7 @@ const DEFAULT_REQUEST_TIMEOUT_MS = 15_000;
|
|
|
75
75
|
* base seconds. The cap never lands below the configured base timeout.
|
|
76
76
|
*/
|
|
77
77
|
const INVOKE_TIMEOUT_PER_MIB_MS = 2_000;
|
|
78
|
-
const INVOKE_TIMEOUT_CAP_MS =
|
|
78
|
+
const INVOKE_TIMEOUT_CAP_MS = 900_000;
|
|
79
79
|
/**
|
|
80
80
|
* How often an ONLINE client re-runs the handshake purely to refresh the two
|
|
81
81
|
* names (T59): the server's display name and this device's name in its
|
package/lib/relay-server.js
CHANGED
|
@@ -56,7 +56,7 @@ const MAX_BODY_BYTES = 1024 * 1024;
|
|
|
56
56
|
* host stores the stream verbatim (`saveFileStreamVerbatim` →
|
|
57
57
|
* `publishImmutableObjectStream`, RT dsh-attachment-local lib/index.js
|
|
58
58
|
* ~699-716; the 20 MiB `maxImageBytes` there covers INLINE images only), so
|
|
59
|
-
* there is no host number to mirror and this relay picks its own:
|
|
59
|
+
* there is no host number to mirror and this relay picks its own: 500 MiB
|
|
60
60
|
* per upload, checked first against `Content-Length` (refused before a byte
|
|
61
61
|
* moves) and then counted while the stream is pumped (a chunked body has no
|
|
62
62
|
* length header — the sub-client's undici forbids hand-set length headers,
|
|
@@ -65,13 +65,16 @@ const MAX_BODY_BYTES = 1024 * 1024;
|
|
|
65
65
|
* answer is 413 `payload-too-large`.
|
|
66
66
|
*
|
|
67
67
|
* SLOW-LINK BOUND (T51-fix, for the docs): a single legitimate upload is
|
|
68
|
-
* also bounded in TIME
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* roughly
|
|
72
|
-
* client-side refusal keeps the connection state)
|
|
68
|
+
* also bounded in TIME. The sub-client's own round-trip budget now caps at
|
|
69
|
+
* 15 minutes (relay-client.ts, the T31-fix rule), but the HOST's HTTP server
|
|
70
|
+
* keeps Node's default 300 s request deadline — that is the binding limit:
|
|
71
|
+
* a 500 MiB body needs roughly 14 Mbps sustained end to end, and a slower
|
|
72
|
+
* link fails the call (the client-side refusal keeps the connection state)
|
|
73
|
+
* rather than hanging. Raising the cap past what that deadline can carry
|
|
74
|
+
* would only move the failure, so 500 MiB is the honest ceiling for the
|
|
75
|
+
* current transport.
|
|
73
76
|
*/
|
|
74
|
-
export const MAX_UPLOAD_BYTES =
|
|
77
|
+
export const MAX_UPLOAD_BYTES = 500 * 1024 * 1024;
|
|
75
78
|
/** The `/api` route the upload channel dispatches into, verbatim from the
|
|
76
79
|
* host's own registration (RT dsh-client-file-upload lib/index.js:73). */
|
|
77
80
|
export const UPLOAD_HTTP_PATH = '/api/session/uploadFileBinary';
|
|
@@ -240,6 +243,90 @@ function headerValue(req, name) {
|
|
|
240
243
|
const value = Array.isArray(raw) ? raw[0] : raw;
|
|
241
244
|
return typeof value === 'string' ? value : undefined;
|
|
242
245
|
}
|
|
246
|
+
function pumpUploadBody(req, res, cap, hangUp) {
|
|
247
|
+
let received = 0;
|
|
248
|
+
let tooLarge = false;
|
|
249
|
+
const onClientGone = () => {
|
|
250
|
+
if (!res.writableEnded)
|
|
251
|
+
hangUp.abort();
|
|
252
|
+
};
|
|
253
|
+
res.on('close', onClientGone);
|
|
254
|
+
const body = new ReadableStream({
|
|
255
|
+
start: (controller) => {
|
|
256
|
+
req.pause();
|
|
257
|
+
req.on('data', (chunk) => {
|
|
258
|
+
if (tooLarge)
|
|
259
|
+
return;
|
|
260
|
+
received += chunk.byteLength;
|
|
261
|
+
if (received > cap) {
|
|
262
|
+
tooLarge = true;
|
|
263
|
+
req.pause();
|
|
264
|
+
hangUp.abort();
|
|
265
|
+
try {
|
|
266
|
+
controller.error(new Error('payload-too-large'));
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
// The consumer may have cancelled first.
|
|
270
|
+
}
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
try {
|
|
274
|
+
controller.enqueue(new Uint8Array(chunk));
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
req.destroy();
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
if (controller.desiredSize !== null && controller.desiredSize <= 0)
|
|
281
|
+
req.pause();
|
|
282
|
+
});
|
|
283
|
+
req.on('end', () => {
|
|
284
|
+
if (tooLarge)
|
|
285
|
+
return;
|
|
286
|
+
try {
|
|
287
|
+
controller.close();
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
// Already errored by the consumer's cancel.
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
req.on('error', () => {
|
|
294
|
+
if (tooLarge)
|
|
295
|
+
return;
|
|
296
|
+
try {
|
|
297
|
+
controller.error(new Error('upload stream failed'));
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
// Already errored.
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
req.on('close', () => {
|
|
304
|
+
if (tooLarge)
|
|
305
|
+
return;
|
|
306
|
+
try {
|
|
307
|
+
controller.close();
|
|
308
|
+
}
|
|
309
|
+
catch {
|
|
310
|
+
// A hang-up destroy after a clean end — nothing to close.
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
},
|
|
314
|
+
pull: () => {
|
|
315
|
+
req.resume();
|
|
316
|
+
},
|
|
317
|
+
cancel: () => {
|
|
318
|
+
req.pause();
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
return {
|
|
322
|
+
body,
|
|
323
|
+
received: () => received,
|
|
324
|
+
tooLarge: () => tooLarge,
|
|
325
|
+
detach: () => {
|
|
326
|
+
res.off('close', onClientGone);
|
|
327
|
+
},
|
|
328
|
+
};
|
|
329
|
+
}
|
|
243
330
|
function isPlainObject(value) {
|
|
244
331
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
245
332
|
}
|
|
@@ -1810,94 +1897,10 @@ export function createRelayHandler(options) {
|
|
|
1810
1897
|
return;
|
|
1811
1898
|
}
|
|
1812
1899
|
// A hang-up cancels the forward mid-stream, like invoke's — and the
|
|
1813
|
-
// cap pump
|
|
1814
|
-
// oversized upload dies at the host side the moment it is judged.
|
|
1900
|
+
// cap pump (pumpUploadBody) aborts the SAME controller when it trips,
|
|
1901
|
+
// so an oversized upload dies at the host side the moment it is judged.
|
|
1815
1902
|
const hangUp = new AbortController();
|
|
1816
|
-
const
|
|
1817
|
-
if (!res.writableEnded)
|
|
1818
|
-
hangUp.abort();
|
|
1819
|
-
};
|
|
1820
|
-
res.on('close', onClientGone);
|
|
1821
|
-
// The counting pump: the client's chunks are re-emitted into the
|
|
1822
|
-
// synthetic body verbatim, counted on the way through, with real
|
|
1823
|
-
// backpressure (the socket pauses whenever the host handler is not
|
|
1824
|
-
// pulling). Past the cap the pump errors — the host's reader throws
|
|
1825
|
-
// out of `requestBodyChunks` and its upload dies mid-write — and the
|
|
1826
|
-
// answer below is the relay's own 413 (written before the tail drain),
|
|
1827
|
-
// never the host's internal failure envelope. `tooLarge` also detaches
|
|
1828
|
-
// the pump from the socket: the tail belongs to drainUpload's bound,
|
|
1829
|
-
// which continues from the pump's own count.
|
|
1830
|
-
let received = 0;
|
|
1831
|
-
let tooLarge = false;
|
|
1832
|
-
const body = new ReadableStream({
|
|
1833
|
-
start: (controller) => {
|
|
1834
|
-
req.pause();
|
|
1835
|
-
req.on('data', (chunk) => {
|
|
1836
|
-
if (tooLarge)
|
|
1837
|
-
return;
|
|
1838
|
-
received += chunk.byteLength;
|
|
1839
|
-
if (received > uploadCapBytes) {
|
|
1840
|
-
tooLarge = true;
|
|
1841
|
-
req.pause();
|
|
1842
|
-
hangUp.abort();
|
|
1843
|
-
try {
|
|
1844
|
-
controller.error(new Error('payload-too-large'));
|
|
1845
|
-
}
|
|
1846
|
-
catch {
|
|
1847
|
-
// The host consumer may have cancelled first.
|
|
1848
|
-
}
|
|
1849
|
-
return;
|
|
1850
|
-
}
|
|
1851
|
-
try {
|
|
1852
|
-
controller.enqueue(new Uint8Array(chunk));
|
|
1853
|
-
}
|
|
1854
|
-
catch {
|
|
1855
|
-
req.destroy();
|
|
1856
|
-
return;
|
|
1857
|
-
}
|
|
1858
|
-
if (controller.desiredSize !== null && controller.desiredSize <= 0)
|
|
1859
|
-
req.pause();
|
|
1860
|
-
});
|
|
1861
|
-
req.on('end', () => {
|
|
1862
|
-
if (tooLarge)
|
|
1863
|
-
return;
|
|
1864
|
-
try {
|
|
1865
|
-
controller.close();
|
|
1866
|
-
}
|
|
1867
|
-
catch {
|
|
1868
|
-
// Already errored by the consumer's cancel.
|
|
1869
|
-
}
|
|
1870
|
-
});
|
|
1871
|
-
req.on('error', () => {
|
|
1872
|
-
if (tooLarge)
|
|
1873
|
-
return;
|
|
1874
|
-
try {
|
|
1875
|
-
controller.error(new Error('upload stream failed'));
|
|
1876
|
-
}
|
|
1877
|
-
catch {
|
|
1878
|
-
// Already errored.
|
|
1879
|
-
}
|
|
1880
|
-
});
|
|
1881
|
-
req.on('close', () => {
|
|
1882
|
-
if (tooLarge)
|
|
1883
|
-
return;
|
|
1884
|
-
try {
|
|
1885
|
-
controller.close();
|
|
1886
|
-
}
|
|
1887
|
-
catch {
|
|
1888
|
-
// A hang-up destroy after a clean end — nothing to close.
|
|
1889
|
-
}
|
|
1890
|
-
});
|
|
1891
|
-
},
|
|
1892
|
-
pull: () => {
|
|
1893
|
-
req.resume();
|
|
1894
|
-
},
|
|
1895
|
-
cancel: () => {
|
|
1896
|
-
// The host consumer stopped reading (its own error path): stop
|
|
1897
|
-
// pulling from the client too — the drain below finishes the wire.
|
|
1898
|
-
req.pause();
|
|
1899
|
-
},
|
|
1900
|
-
});
|
|
1903
|
+
const pump = pumpUploadBody(req, res, uploadCapBytes, hangUp);
|
|
1901
1904
|
let request;
|
|
1902
1905
|
try {
|
|
1903
1906
|
// The URL is composed from the DECISION's normalized query alone,
|
|
@@ -1907,7 +1910,7 @@ export function createRelayHandler(options) {
|
|
|
1907
1910
|
const init = {
|
|
1908
1911
|
method: 'POST',
|
|
1909
1912
|
headers: { 'content-type': 'application/octet-stream' },
|
|
1910
|
-
body,
|
|
1913
|
+
body: pump.body,
|
|
1911
1914
|
signal: hangUp.signal,
|
|
1912
1915
|
};
|
|
1913
1916
|
init.duplex = 'half';
|
|
@@ -1931,10 +1934,10 @@ export function createRelayHandler(options) {
|
|
|
1931
1934
|
// wire, and the sub-client reconstructs the exact Response its UI
|
|
1932
1935
|
// would have seen locally.
|
|
1933
1936
|
const bodyText = await upstream.text();
|
|
1934
|
-
if (tooLarge) {
|
|
1937
|
+
if (pump.tooLarge()) {
|
|
1935
1938
|
res.setHeader('Connection', 'close');
|
|
1936
1939
|
responseJson(res, 413, PAYLOAD_TOO_LARGE);
|
|
1937
|
-
await drainUpload(req, received, drainDeadlineMs);
|
|
1940
|
+
await drainUpload(req, pump.received(), drainDeadlineMs);
|
|
1938
1941
|
return;
|
|
1939
1942
|
}
|
|
1940
1943
|
const contentType = upstream.headers.get('content-type') ?? undefined;
|
|
@@ -1949,16 +1952,16 @@ export function createRelayHandler(options) {
|
|
|
1949
1952
|
// cap verdict outranks it: the abort the pump sent INTO the dispatch
|
|
1950
1953
|
// surfaces here as a throw, and the client still gets its 413
|
|
1951
1954
|
// (before the tail drain, like every oversize answer).
|
|
1952
|
-
if (tooLarge) {
|
|
1955
|
+
if (pump.tooLarge()) {
|
|
1953
1956
|
res.setHeader('Connection', 'close');
|
|
1954
1957
|
responseJson(res, 413, PAYLOAD_TOO_LARGE);
|
|
1955
|
-
await drainUpload(req, received, drainDeadlineMs);
|
|
1958
|
+
await drainUpload(req, pump.received(), drainDeadlineMs);
|
|
1956
1959
|
return;
|
|
1957
1960
|
}
|
|
1958
1961
|
responseJson(res, 502, { ok: false, error: { code: 'internal' } });
|
|
1959
1962
|
}
|
|
1960
1963
|
finally {
|
|
1961
|
-
|
|
1964
|
+
pump.detach();
|
|
1962
1965
|
// The upload is over — answered, refused mid-flight, or its client
|
|
1963
1966
|
// gone: the budget slot goes back (T51-fix).
|
|
1964
1967
|
const remaining = (uploadsByDevice.get(device) ?? 1) - 1;
|