From: Kim Alvefur Date: Wed, 23 Dec 2015 10:42:14 +0000 (+0100) Subject: mod_admin_telnet: Make timer:info command more robust X-Git-Url: https://git.enpas.org/?a=commitdiff_plain;h=10e34637c2bb219544bee01aad106b7e691752df;p=prosody.git mod_admin_telnet: Make timer:info command more robust --- diff --git a/plugins/mod_admin_telnet.lua b/plugins/mod_admin_telnet.lua index aa7b10cb..02ba3ab0 100644 --- a/plugins/mod_admin_telnet.lua +++ b/plugins/mod_admin_telnet.lua @@ -339,31 +339,36 @@ end def_env.timer = {}; function def_env.timer:info() + local socket = require "socket"; local print = self.session.print; local add_task = require"util.timer".add_task; local h, params = add_task.h, add_task.params; - print("-- util.timer"); - for i, id in ipairs(h.ids) do - if not params[id] then - print(os.date("%F %T", h.priorities[i]), h.items[id]); - elseif not params[id].callback then - print(os.date("%F %T", h.priorities[i]), h.items[id], unpack(params[id])); - else - print(os.date("%F %T", h.priorities[i]), params[id].callback, unpack(params[id])); + if h then + print("-- util.timer"); + for i, id in ipairs(h.ids) do + if not params[id] then + print(os.date("%F %T", h.priorities[i]), h.items[id]); + elseif not params[id].callback then + print(os.date("%F %T", h.priorities[i]), h.items[id], unpack(params[id])); + else + print(os.date("%F %T", h.priorities[i]), params[id].callback, unpack(params[id])); + end end end if server.event_base then local count = 0; for k, v in pairs(debug.getregistry()) do - if type(v) == "function" and v.callback == add_task._on_timer then + if type(v) == "function" and v.callback and v.callback == add_task._on_timer then count = count + 1; end end print(count .. " libevent callbacks"); end - local next_time = h:peek(); - if next_time then - return true, os.date("Next event at %F %T", next_time); + if h then + local next_time = h:peek(); + if next_time then + return true, os.date("Next event at %F %T (in %%.6fs)", next_time):format(next_time - socket.gettime()); + end end return true; end