fix: Error handling on streams missing error handler on read streams.

Related https://github.com/outline/outline/discussions/5855
This commit is contained in:
Tom Moor
2023-09-23 18:08:36 -04:00
parent 65d3c8309e
commit 6aec085942
2 changed files with 22 additions and 12 deletions

View File

@@ -70,15 +70,18 @@ export default class LocalStorage extends BaseStorage {
const destPath = path.join(env.FILE_STORAGE_LOCAL_ROOT_DIR, key);
closeSync(openSync(destPath, "w"));
const dest = createWriteStream(destPath);
src.pipe(dest);
return new Promise<string>((resolve, reject) => {
src.once("end", () => resolve(this.getUrlForKey(key)));
src.once("err", (err) => {
dest.end();
reject(err);
});
const dest = createWriteStream(destPath)
.on("error", reject)
.on("finish", () => resolve(this.getUrlForKey(key)));
src
.on("error", (err) => {
dest.end();
reject(err);
})
.pipe(dest);
});
};