conditionalJsonParser skips express.json() when the request has an
x-node-id pointing at a remote node, leaving the raw body stream intact
so the remote proxy middleware can pipe it upstream. No existing test
pinned that the skip also applies to multipart payloads, not just JSON.
A regression that re-enabled body-parser on multipart would silently
strand POST /api/stacks/<name>/files/upload to remote nodes: the proxy
would forward an already-drained stream, the upstream multer would see
an empty body, and the user would get a 400 from a successful-looking
request.
Two cases pin the behaviour:
- An in-process http capture server is registered as a remote node. A
multipart upload through the central with x-node-id set must arrive
with Content-Type carrying the boundary, Content-Length matching the
raw byte length, the original file bytes intact, an envelope larger
than a half-drained stream could ever produce, and the user JWT
rewritten to the remote node's api_token so the central does not
leak its session token to the peer.
- A second case extracts the boundary from the Content-Type header and
checks both that the body bytes contain --<boundary> and that the
original filename is preserved across the proxy.
No production code change. The test runs green against current main;
the value is in regression prevention for a load-bearing assumption.