summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Hofmaier2019-04-18 04:24:47 +0200
committerChristian Hofmaier2019-04-18 04:24:47 +0200
commitc396c8da8825d9025ecb10d8810c9da5a7a9fd9a (patch)
tree9b8866894efa42e84368c8e8a450038c5eb5830d
parent[wolhelper] add sanity checks (diff)
downloadbas-c396c8da8825d9025ecb10d8810c9da5a7a9fd9a.tar.gz
bas-c396c8da8825d9025ecb10d8810c9da5a7a9fd9a.tar.xz
bas-c396c8da8825d9025ecb10d8810c9da5a7a9fd9a.zip
[scheduler] allow timeouts greater than 25 days
-rw-r--r--server/bin/scheduler.js15
-rw-r--r--server/package-lock.json5
-rw-r--r--server/package.json1
3 files changed, 12 insertions, 9 deletions
diff --git a/server/bin/scheduler.js b/server/bin/scheduler.js
index f13e329..dab37a4 100644
--- a/server/bin/scheduler.js
+++ b/server/bin/scheduler.js
@@ -4,6 +4,7 @@ global.__appdir = path.join(__dirname, '..')
const db = require(path.join(__appdir, 'lib', 'sequelize'))
const groupHelper = require(path.join(__appdir, 'lib', 'grouphelper'))
const wolHelper = require(path.join(__appdir, 'lib', 'wolhelper'))
+const setTimeoutAt = require('safe-timers').setTimeoutAt
const zmq = require('zeromq')
const socket = zmq.socket('pull')
socket.bindSync('ipc:///tmp/bas_zeromq_events')
@@ -26,7 +27,7 @@ async function calcNextWake (id) {
// Event got deleted or was updated to be not wakeonlan anymore
if (event === null || !event.wakeonlan) {
- clearTimeout(runningTimeouts[id])
+ runningTimeouts[id].clear()
delete runningTimeouts[id]
return
}
@@ -36,13 +37,9 @@ async function calcNextWake (id) {
var now = new Date()
if (!times.repetitive) {
- var start = new Date(times.start * 1000)
- if (start > now) {
- // 1. Calculate next wake
- nextWake = start - now
-
- // 2. Set timeout
- runningTimeouts[id] = setTimeout(function () {
+ nextWake = new Date(times.start * 1000)
+ if (nextWake > now) {
+ runningTimeouts[id] = setTimeoutAt(function () {
wakeUpClients(id)
}, nextWake)
}
@@ -59,7 +56,7 @@ async function calcNextWake (id) {
}, nextWake)
*/
}
- if (nextWake > 0) console.log('Scheduled event ' + event.name + ' in ' + nextWake + 'ms')
+ if (nextWake > now) console.log('Scheduled event ' + event.name + ' at ' + nextWake)
}
// Wake all clients of event
diff --git a/server/package-lock.json b/server/package-lock.json
index e6c98bd..bd8def2 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -3593,6 +3593,11 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
},
+ "safe-timers": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-timers/-/safe-timers-1.1.0.tgz",
+ "integrity": "sha1-xYroMl2407BnMi8KTvOgytZ6rYM="
+ },
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
diff --git a/server/package.json b/server/package.json
index d726807..817149a 100644
--- a/server/package.json
+++ b/server/package.json
@@ -23,6 +23,7 @@
"mysql2": "^1.6.5",
"node-wol": "^0.1.1",
"nodemailer": "^4.7.0",
+ "safe-timers": "^1.1.0",
"secure-password": "^3.1.0",
"sequelize": "^4.43.0",
"sequelize-cli": "^4.1.1",