util.set: Rename private items container, optimise set.difference() and add set.inter...
[prosody.git] / util / discohelper.lua
index 4d3bc3f63c6e04532c7f24f3ef842d20cfde1839..c2301937929697e6a1d84eaac11254b7e2e29a49 100644 (file)
@@ -1,20 +1,9 @@
--- Prosody IM v0.1
--- Copyright (C) 2008 Matthew Wild
--- Copyright (C) 2008 Waqas Hussain
+-- Prosody IM v0.4
+-- Copyright (C) 2008-2009 Matthew Wild
+-- Copyright (C) 2008-2009 Waqas Hussain
 -- 
--- This program is free software; you can redistribute it and/or
--- modify it under the terms of the GNU General Public License
--- as published by the Free Software Foundation; either version 2
--- of the License, or (at your option) any later version.
--- 
--- This program is distributed in the hope that it will be useful,
--- but WITHOUT ANY WARRANTY; without even the implied warranty of
--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--- GNU General Public License for more details.
--- 
--- You should have received a copy of the GNU General Public License
--- along with this program; if not, write to the Free Software
--- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
 --
 
 
@@ -57,20 +46,8 @@ local function handle(self, stanza)
                elseif query.attr.xmlns == "http://jabber.org/protocol/disco#items" then\r
                        handlers = self.item_handlers;\r
                end\r
-               local handler = handlers[to]; -- get the handler\r
-               if not handler then -- if not found then use default handler\r
-                       if to_node then\r
-                               handler = handlers["*defaultnode"];\r
-                       else\r
-                               handler = handlers["*defaulthost"];\r
-                       end\r
-               end\r
-               local found; -- to keep track of any handlers found\r
-               if handler then\r
-                       for _, h in ipairs(handler) do\r
-                               if h(reply, to, from, node) then found = true; end\r
-                       end\r
-               end\r
+               local handler;
+               local found; -- to keep track of any handlers found
                if to_node then -- handlers which get called always\r
                        handler = handlers["*node"];\r
                else\r
@@ -81,6 +58,19 @@ local function handle(self, stanza)
                                if h(reply, to, from, node) then found = true; end\r
                        end\r
                end\r
+               handler = handlers[to]; -- get the handler
+               if not handler then -- if not found then use default handler
+                       if to_node then
+                               handler = handlers["*defaultnode"];
+                       else
+                               handler = handlers["*defaulthost"];
+                       end
+               end
+               if handler then
+                       for _, h in ipairs(handler) do
+                               if h(reply, to, from, node) then found = true; end
+                       end
+               end
                if found then return reply; end -- return the reply if there was one\r
                return st.error_reply(stanza, "cancel", "service-unavailable");\r
        end\r