# HG changeset patch # User Waqas Hussain # Date 1290893066 -18000 # Node ID 71fd1582f01bb926fd7ef8da23e6c4039331042c # Parent 9a590b03a8d6303d5defba0aab611b554366c720 mod_iq: Extra IQ get and set sub-events are now fired: "iq-{get,set}/{host,self,bare}/xmlns:tag" (when "iq/{host,self,bare}/xmlns:tag" is unhandled). diff -r 9a590b03a8d6 -r 71fd1582f01b plugins/mod_iq.lua --- a/plugins/mod_iq.lua Sat Nov 27 21:16:32 2010 +0000 +++ b/plugins/mod_iq.lua Sun Nov 28 02:24:26 2010 +0500 @@ -35,7 +35,9 @@ -- TODO fire post processing events if stanza.attr.type == "get" or stanza.attr.type == "set" then - return module:fire_event("iq/bare/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); + local ret = module:fire_event("iq/bare/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); + if ret ~= nil then return ret; end + return module:fire_event("iq-"..stanza.attr.type.."/bare/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); else module:fire_event("iq-"..stanza.attr.type.."/bare/"..stanza.attr.id, data); return true; @@ -43,11 +45,13 @@ end); module:hook("iq/self", function(data) - -- IQ to bare JID recieved + -- IQ to self JID recieved local origin, stanza = data.origin, data.stanza; if stanza.attr.type == "get" or stanza.attr.type == "set" then - return module:fire_event("iq/self/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); + local ret = module:fire_event("iq/self/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); + if ret ~= nil then return ret; end + return module:fire_event("iq-"..stanza.attr.type.."/self/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); else module:fire_event("iq-"..stanza.attr.type.."/self/"..stanza.attr.id, data); return true; @@ -59,7 +63,9 @@ local origin, stanza = data.origin, data.stanza; if stanza.attr.type == "get" or stanza.attr.type == "set" then - return module:fire_event("iq/host/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); + local ret = module:fire_event("iq/host/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); + if ret ~= nil then return ret; end + return module:fire_event("iq-"..stanza.attr.type.."/host/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name, data); else module:fire_event("iq-"..stanza.attr.type.."/host/"..stanza.attr.id, data); return true;