# HG changeset patch # User Kim Alvefur # Date 1450867334 -3600 # Node ID 298bfc7688891c9a2fba3abd0849d48790a00bce # Parent f387fae9fb31d41268fcdcd952932f6a7af14292 mod_admin_telnet: Make timer:info command more robust diff -r f387fae9fb31 -r 298bfc768889 plugins/mod_admin_telnet.lua --- a/plugins/mod_admin_telnet.lua Wed Dec 16 16:47:34 2015 +0000 +++ b/plugins/mod_admin_telnet.lua Wed Dec 23 11:42:14 2015 +0100 @@ -339,31 +339,36 @@ 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