Software /
code /
prosody
Changeset
7014:298bfc768889
mod_admin_telnet: Make timer:info command more robust
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 23 Dec 2015 11:42:14 +0100 |
parents | 7013:f387fae9fb31 |
children | 7015:17e275e8bd79 |
files | plugins/mod_admin_telnet.lua |
diffstat | 1 files changed, 17 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- 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