diff --git a/src/routes/tasks.js b/src/routes/tasks.js index e0d28c067..32e6892e1 100644 --- a/src/routes/tasks.js +++ b/src/routes/tasks.js @@ -21,6 +21,7 @@ function stopTask(req, res, next) { tasks.stopTask(req.params.taskId, auditSource(req), function (error) { if (error && error.reason === TaskError.NOT_FOUND) return next(new HttpError(404, 'No such task')); + if (error && error.reason === TaskError.BAD_STATE) return next(new HttpError(409, error.message)); if (error) return next(new HttpError(500, error)); next(new HttpSuccess(204, {})); diff --git a/src/tasks.js b/src/tasks.js index ef35dd883..4a7cc77a1 100644 --- a/src/tasks.js +++ b/src/tasks.js @@ -103,7 +103,7 @@ function startTask(id, auditSource, callback) { assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); - let taskInfo = TASKS[id]; + const taskInfo = TASKS[id]; if (!taskInfo) return callback(new TaskError(TaskError.NOT_FOUND, 'No such task')); let error = locker.lock(taskInfo.lock); @@ -151,6 +151,9 @@ function stopTask(id, auditSource, callback) { assert.strictEqual(typeof auditSource, 'object'); assert.strictEqual(typeof callback, 'function'); + const taskInfo = TASKS[id]; + if (!taskInfo) return callback(new TaskError(TaskError.NOT_FOUND, 'No such task')); + if (!gTasks[id]) return callback(new TaskError(TaskError.BAD_STATE, 'task is not active')); debug(`stopTask: stopping task ${id}`);