diff options
author | Kim Alvefur <zash@zash.se> | 2015-12-23 11:42:14 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2015-12-23 11:42:14 +0100 |
commit | 9a33b25f7024bf0d89e1c74e0e7bff78ab486464 (patch) | |
tree | 18589ec973a7f682ff17f1ee1c1aa4294d9a168b | |
parent | d780096b2a3091e32b10f3cf8e5472864dfc7475 (diff) | |
download | prosody-9a33b25f7024bf0d89e1c74e0e7bff78ab486464.tar.gz prosody-9a33b25f7024bf0d89e1c74e0e7bff78ab486464.zip |
mod_admin_telnet: Make timer:info command more robust
-rw-r--r-- | plugins/mod_admin_telnet.lua | 29 |
1 files changed, 17 insertions, 12 deletions
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 |