From 5e6ec13c061a7caef5b6b940d05f8339d31003c0 Mon Sep 17 00:00:00 2001 From: mboehmlaender Date: Wed, 11 Mar 2026 12:09:49 +0000 Subject: [PATCH] final dev --- backend/src/services/scriptService.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/src/services/scriptService.js b/backend/src/services/scriptService.js index 8131b62..616b1a0 100644 --- a/backend/src/services/scriptService.js +++ b/backend/src/services/scriptService.js @@ -521,7 +521,8 @@ class ScriptService { const controlState = { cancelRequested: false, cancelReason: null, - child: null + child: null, + cancelSignalSent: false }; runtimeActivityService.setControls(activityId, { cancel: async (payload = {}) => { @@ -535,7 +536,7 @@ class ScriptService { }); if (controlState.child) { // User cancel should stop instantly. - killChildProcessTree(controlState.child, 'SIGKILL'); + controlState.cancelSignalSent = killChildProcessTree(controlState.child, 'SIGKILL') || controlState.cancelSignalSent; } return { accepted: true, message: 'Abbruch angefordert.' }; } @@ -552,7 +553,8 @@ class ScriptService { }); const exitCode = Number.isFinite(Number(run.code)) ? Number(run.code) : null; const finishedSuccessfully = exitCode === 0 && !run.timedOut; - const cancelledByUser = Boolean(controlState.cancelRequested) && !finishedSuccessfully; + const cancelledByUser = Boolean(controlState.cancelRequested) + && (Boolean(controlState.cancelSignalSent) || !finishedSuccessfully); const success = finishedSuccessfully; const message = cancelledByUser ? (controlState.cancelReason || 'Von Benutzer abgebrochen')