diff --git a/services/filestore/app/js/FileController.js b/services/filestore/app/js/FileController.js index 0e663f9421..72f68047ab 100644 --- a/services/filestore/app/js/FileController.js +++ b/services/filestore/app/js/FileController.js @@ -61,7 +61,12 @@ function getFile(req, res, next) { } pipeline(fileStream, res, err => { - if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + if (!fileStream.destroyed) { + fileStream.destroy() + } + if (err && err.code === 'ERR_STREAM_PREMATURE_CLOSE') { + res.end() + } else if (err) { next( new Errors.ReadError({ message: 'error transferring stream', diff --git a/services/filestore/app/js/PersistorHelper.js b/services/filestore/app/js/PersistorHelper.js index f2d0013915..99ac26aece 100644 --- a/services/filestore/app/js/PersistorHelper.js +++ b/services/filestore/app/js/PersistorHelper.js @@ -112,6 +112,13 @@ function getReadyPipeline(...streams) { } resolve(lastStream) } + if (err) { + for (const stream of streams) { + if (!stream.destroyed) { + stream.destroy() + } + } + } } pipeline(...streams).catch(handler)