Software /
code /
prosody
File
plugins/mod_csi.lua @ 11240:0f7ecc9a4560
mod_component: Distinguish missing stream @to from unknown local component (thanks Daniel_W)
Spectrum2 did not include a stream @to attribute due to a configuration
error. "nil does not match ..." is not very clear in pointing this out
and is somewhat confusing, tho it did help pinpoint what went wrong.
It's also not great leak to programming language internals like "nil"
out into user-facing strings like this.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 18 Dec 2020 22:29:44 +0100 |
parent | 10429:0b04d25c4ffb |
child | 12977:74b9e05af71e |
line wrap: on
line source
local st = require "util.stanza"; local xmlns_csi = "urn:xmpp:csi:0"; local csi_feature = st.stanza("csi", { xmlns = xmlns_csi }); local csi_handler_available = nil; module:hook("stream-features", function (event) if event.origin.username and csi_handler_available then event.features:add_child(csi_feature); end end); function refire_event(name) return function (event) if event.origin.username then event.origin.state = event.stanza.name; module:fire_event(name, event); return true; end end; end module:hook("stanza/"..xmlns_csi..":active", refire_event("csi-client-active")); module:hook("stanza/"..xmlns_csi..":inactive", refire_event("csi-client-inactive")); function module.load() if prosody.hosts[module.host].events._handlers["csi-client-active"] then csi_handler_available = true; module:set_status("core", "CSI handler module loaded"); else csi_handler_available = false; module:set_status("warn", "No CSI handler module loaded"); end end module:hook("module-loaded", module.load); module:hook("module-unloaded", module.load);