aboutsummaryrefslogtreecommitdiff
path: root/src/jobd.js
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2021-03-02 23:54:12 +0300
committerEvgeny Zinoviev <me@ch1p.io>2021-03-02 23:54:12 +0300
commit12a2dda2b801487ccb10690d19d9f28aed90c57c (patch)
treec03da32d532d50ad7b07034a40a56d905ff240b9 /src/jobd.js
parent7247c31d8ad2a22f95a870939d25ae267376e0de (diff)
jobd-master: support run-manual(); improve data validation here and there
Diffstat (limited to 'src/jobd.js')
-rwxr-xr-xsrc/jobd.js29
1 files changed, 17 insertions, 12 deletions
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
}
}