From aa490dc066999f41166edf80e7fa11cca4443fd9 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Tue, 17 Sep 2024 15:38:06 +0200 Subject: [PATCH] fix(xo-server/rest-api): fix broken VDI export Introduced by 7b256ab8e Not completely fixed by 8eae8e7f4 See zammad#27167 --- CHANGELOG.unreleased.md | 2 ++ packages/xo-server/src/xo-mixins/rest-api.mjs | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md index 0c54d57254c..4cd31ff493c 100644 --- a/CHANGELOG.unreleased.md +++ b/CHANGELOG.unreleased.md @@ -21,6 +21,7 @@ - [Hub/Recipes/Kubernetes] Properly sort versions in selector - [Host/Network] Fix `an error has occurred` briefly displaying in 'Mode' column of the host's Network tab (PR [#7954](https://github.com/vatesfr/xen-orchestra/pull/7954)) +- [REST API] Fix VDI export broken in XO 5.96.0 and not completely fixed in XO 5.98.0 ### Packages to release @@ -41,6 +42,7 @@ - @xen-orchestra/lite minor - @xen-orchestra/web minor - @xen-orchestra/web-core minor +- xo-server patch - xo-web minor diff --git a/packages/xo-server/src/xo-mixins/rest-api.mjs b/packages/xo-server/src/xo-mixins/rest-api.mjs index 9daa928a543..dad0dc44cd1 100644 --- a/packages/xo-server/src/xo-mixins/rest-api.mjs +++ b/packages/xo-server/src/xo-mixins/rest-api.mjs @@ -955,7 +955,14 @@ export default class RestApi { const nbdConcurrency = req.query.nbdConcurrency && parseInt(req.query.nbdConcurrency) const stream = await req.xapiObject.$exportContent({ format: req.params.format, preferNbd, nbdConcurrency }) - res.writeHead(200, 'OK', { 'content-disposition': 'attachment', 'content-length': stream.length }) + const headers = { 'content-disposition': 'attachment' } + + const { length } = stream + if (length !== undefined) { + headers['content-length'] = length + } + + res.writeHead(200, 'OK', headers) await pipeline(stream, res) }) )