diff --git a/src/routes/api/v1/thumbnail/[id]/+server.ts b/src/routes/api/v1/thumbnail/[id]/+server.ts index f513dba..5f433d0 100644 --- a/src/routes/api/v1/thumbnail/[id]/+server.ts +++ b/src/routes/api/v1/thumbnail/[id]/+server.ts @@ -19,7 +19,10 @@ export const GET = async ({ request, locals, params }) => { const metadata = await minio.statObject(BUCKET, upload.thumbnail.fileName); const ac = new AbortController(); - ac.signal.onabort = () => object.destroy; + ac.signal.onabort = () => { + object.destroy(); + object.removeAllListeners(); + }; const stream = new ReadableStream({ start(controller) { diff --git a/src/routes/download/[id]/+server.ts b/src/routes/download/[id]/+server.ts index decc59d..3a0a304 100644 --- a/src/routes/download/[id]/+server.ts +++ b/src/routes/download/[id]/+server.ts @@ -1,6 +1,7 @@ import { getUpload } from '$lib/server/database.js'; import minio, { BUCKET } from '$lib/server/minio'; import { error } from '@sveltejs/kit'; +import { setTimeout } from 'node:timers/promises'; export const GET = async ({ params, locals }) => { let id: any = params.id.split('.'); @@ -17,7 +18,10 @@ export const GET = async ({ params, locals }) => { const metadata = await minio.statObject(BUCKET, `${file.uploader.id}/${file.internalName}`); const ac = new AbortController(); - ac.signal.onabort = () => object.destroy; + ac.signal.onabort = () => { + object.destroy(); + object.removeAllListeners(); + }; const stream = new ReadableStream({ start(controller) { @@ -25,11 +29,7 @@ export const GET = async ({ params, locals }) => { controller.enqueue(chunk); }); object.on('end', () => { - try { - controller.close(); - } catch (e) { - console.log('Tried to close closed stream', id); - } + controller.close(); }); }, cancel() { diff --git a/src/routes/download/[id]/[ticket]/+server.ts b/src/routes/download/[id]/[ticket]/+server.ts index ee07228..d588926 100644 --- a/src/routes/download/[id]/[ticket]/+server.ts +++ b/src/routes/download/[id]/[ticket]/+server.ts @@ -27,7 +27,10 @@ export const GET = async ({ params, locals }) => { const metadata = await minio.statObject(BUCKET, `${file.uploader.id}/${file.internalName}`); const ac = new AbortController(); - ac.signal.onabort = () => object.destroy; + ac.signal.onabort = () => { + object.destroy(); + object.removeAllListeners(); + }; const stream = new ReadableStream({ start(controller) {