improve audio stream teardown and enhance robust directory deletion with retries

This commit is contained in:
2026-07-25 21:12:38 +01:00
parent 7806483a86
commit 5185d4dc0b
3 changed files with 140 additions and 22 deletions
+16
View File
@@ -34,6 +34,12 @@ export async function GET(request: Request) {
// Convert stream to ReadableStream for NextResponse
const stream = new ReadableStream({
start(controller) {
if (request.signal.aborted) {
file.destroy();
return;
}
const onAbort = () => file.destroy();
request.signal.addEventListener('abort', onAbort);
file.on('data', (chunk) => {
try {
controller.enqueue(chunk);
@@ -43,11 +49,13 @@ export async function GET(request: Request) {
}
});
file.on('end', () => {
request.signal.removeEventListener('abort', onAbort);
try {
controller.close();
} catch (e) { }
});
file.on('error', (err) => {
request.signal.removeEventListener('abort', onAbort);
try {
controller.error(err);
} catch (e) { }
@@ -73,6 +81,12 @@ export async function GET(request: Request) {
// Convert stream to ReadableStream for NextResponse
const stream = new ReadableStream({
start(controller) {
if (request.signal.aborted) {
file.destroy();
return;
}
const onAbort = () => file.destroy();
request.signal.addEventListener('abort', onAbort);
file.on('data', (chunk) => {
try {
controller.enqueue(chunk);
@@ -81,11 +95,13 @@ export async function GET(request: Request) {
}
});
file.on('end', () => {
request.signal.removeEventListener('abort', onAbort);
try {
controller.close();
} catch (e) { }
});
file.on('error', (err) => {
request.signal.removeEventListener('abort', onAbort);
try {
controller.error(err);
} catch (e) { }