From 12a2dda2b801487ccb10690d19d9f28aed90c57c Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Tue, 2 Mar 2021 23:54:12 +0300 Subject: jobd-master: support run-manual(); improve data validation here and there --- src/jobd.js | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'src/jobd.js') diff --git a/src/jobd.js b/src/jobd.js index e341f3d..4605137 100755 --- a/src/jobd.js +++ b/src/jobd.js @@ -5,6 +5,7 @@ const config = require('./lib/config') const db = require('./lib/db') const {uniq} = require('lodash') const {createCallablePromise} = require('./lib/util') +const {validateTargetsList} = require('./lib/data-validator') const { Server, Connection, @@ -145,22 +146,26 @@ async function onRequestMessage(message, connection) { switch (message.requestType) { case 'poll': { - const targets = message.requestData?.targets || [] - if (!targets.length) { - connection.send( - new ResponseMessage(message.requestNo) - .setError('empty targets') - ) - break - } + // null means all + let targets = null - for (const t of targets) { - if (!worker.hasTarget(t)) { + if (message.requestData?.targets !== undefined) { + targets = message.requestData?.targets + + // validate data + try { + validateTargetsList(targets) + + for (const t of targets) { + if (!worker.hasTarget(t)) + throw new Error(`invalid target '${t}'`) + } + } catch (e) { connection.send( new ResponseMessage(message.requestNo) - .setError(`invalid target '${t}'`) + .setError(e.message) ) - break + return } } -- cgit v1.2.3