# HG changeset patch # User Matthew Wild # Date 1535973560 -3600 # Node ID 0c1a1172d942dff29df58d1bdff511b235be4c33 # Parent b86c2e135797334bc017dfff29748bd7c2e0ddc6 MUC: Add support for separate events for disco#info queries with a 'node' Reserved nickname discovery uses this diff -r b86c2e135797 -r 0c1a1172d942 plugins/muc/muc.lib.lua --- a/plugins/muc/muc.lib.lua Mon Sep 03 12:18:13 2018 +0100 +++ b/plugins/muc/muc.lib.lua Mon Sep 03 12:19:20 2018 +0100 @@ -334,13 +334,23 @@ end function room_mt:get_disco_info(stanza) - local reply = st.reply(stanza):query("http://jabber.org/protocol/disco#info"); - local form = dataform.new { - { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/muc#roominfo" }; - }; - local formdata = {}; - module:fire_event("muc-disco#info", {room = self; reply = reply; form = form, formdata = formdata ;}); - reply:add_child(form:form(formdata, "result")); + local node = stanza.tags[1].attr.node or ""; + local reply = st.reply(stanza):query("http://jabber.org/protocol/disco#info", { node = node }); + local event_name = "muc-disco#info"; + local event_data = { room = self, reply = reply, stanza = stanza }; + + if node ~= "" then + event_name = event_name.."/"..node; + else + event_data.form = dataform.new { + { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/muc#roominfo" }; + }; + event_data.formdata = {}; + end + module:fire_event(event_name, event_data); + if event_data.form then + reply:add_child(event_data.form:form(event_data.formdata, "result")); + end return reply; end module:hook("muc-disco#info", function(event)