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) }) )