Mercurial > prosody-modules
diff mod_log_ringbuffer/mod_log_ringbuffer.lua @ 6333:8a47791338fc
mod_log_ringbuffer: Support multiple triggers simultaneously (e.g. signal + event)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 02 Oct 2025 14:41:18 +0100 |
| parents | 97c9b76867ca |
| children |
line wrap: on
line diff
--- a/mod_log_ringbuffer/mod_log_ringbuffer.lua Wed Oct 01 18:17:13 2025 +0100 +++ b/mod_log_ringbuffer/mod_log_ringbuffer.lua Thu Oct 02 14:41:18 2025 +0100 @@ -108,11 +108,13 @@ end if sink_config.signal then - module:hook_global("signal/"..sink_config.signal, handler); - event_hooks[handler] = "signal/"..sink_config.signal; - elseif sink_config.event then + local event_name = "signal/"..sink_config.signal; + module:hook_global(event_name, handler); + table.insert(event_hooks, { handler, event_name }); + end + if sink_config.event then module:hook_global(sink_config.event, handler); - event_hooks[handler] = sink_config.event; + table.insert(event_hooks, { handler, sink_config.event }); end return function (name, level, message, ...) @@ -122,9 +124,10 @@ end module:hook_global("reopen-log-files", function() - for handler, event_name in pairs(event_hooks) do + for i, entry in ipairs(event_hooks) do + local handler, event_name = entry[1], entry[2]; module:unhook_object_event(prosody.events, event_name, handler); - event_hooks[handler] = nil; + event_hooks[i] = nil; end end, 1);
