From e027564d2a2a172606a439d96995177801c111fd Mon Sep 17 00:00:00 2001 From: DarkSky <25152247+darkskygit@users.noreply.github.com> Date: Tue, 8 Jul 2025 18:18:25 +0800 Subject: [PATCH] fix(server): incorrect abort condition (#13100) fix AI-308 --- packages/backend/server/src/plugins/copilot/utils.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/backend/server/src/plugins/copilot/utils.ts b/packages/backend/server/src/plugins/copilot/utils.ts index 9e8ff4343..caa1c4ead 100644 --- a/packages/backend/server/src/plugins/copilot/utils.ts +++ b/packages/backend/server/src/plugins/copilot/utils.ts @@ -21,16 +21,19 @@ type SignalReturnType = { export function getSignal(req: Request): SignalReturnType { const controller = new AbortController(); - let isAborted = true; + let hasEnded = false; let callback: ((isAborted: boolean) => void) | undefined = undefined; const onSocketEnd = () => { - isAborted = false; + hasEnded = true; }; const onSocketClose = (hadError: boolean) => { req.socket.off('end', onSocketEnd); req.socket.off('close', onSocketClose); - const aborted = hadError || isAborted; + // NOTE: the connection is considered abnormally interrupted: + // 1. there is an error when the socket is closed. + // 2. the connection is closed directly without going through the normal end process (the client disconnects actively). + const aborted = hadError || !hasEnded; if (aborted) { controller.abort(); }