/usr/lib/prosody/util/watchdog.lua is in prosody 0.9.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | local timer = require "util.timer";
local setmetatable = setmetatable;
local os_time = os.time;
module "watchdog"
local watchdog_methods = {};
local watchdog_mt = { __index = watchdog_methods };
function new(timeout, callback)
local watchdog = setmetatable({ timeout = timeout, last_reset = os_time(), callback = callback }, watchdog_mt);
timer.add_task(timeout+1, function (current_time)
local last_reset = watchdog.last_reset;
if not last_reset then
return;
end
local time_left = (last_reset + timeout) - current_time;
if time_left < 0 then
return watchdog:callback();
end
return time_left + 1;
end);
return watchdog;
end
function watchdog_methods:reset()
self.last_reset = os_time();
end
function watchdog_methods:cancel()
self.last_reset = nil;
end
return _M;
|