Return an empty set intead of an error when no disco items are available for a host
[prosody.git] / core / discomanager.lua
index 5686f47f39dbcdf6c7c65cdbd886187daa0ad64e..fe63f972cc0453eec3193a1970d41737a31f83ce 100644 (file)
@@ -1,3 +1,23 @@
+-- Prosody IM v0.2
+-- Copyright (C) 2008 Matthew Wild
+-- Copyright (C) 2008 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.
+--
+
+
 \r
 local helper = require "util.discohelper".new();\r
 local hosts = hosts;\r
@@ -10,7 +30,7 @@ local print = print;
 do\r
        helper:addDiscoInfoHandler("*host", function(reply, to, from, node)\r
                if hosts[to] then\r
-                       reply:tag("identity", {category="server", type="im", name="lxmppd"}):up();\r
+                       reply:tag("identity", {category="server", type="im", name="Prosody"}):up();\r
                        return true;\r
                end\r
        end);\r
@@ -21,6 +41,11 @@ do
                        return true;\r
                end\r
        end);\r
+       helper:addDiscoItemsHandler("*host", function(reply, to, from, node)
+               if hosts[to] and hosts[to].type == "local" then
+                       return true;
+               end
+       end);
 end\r
 \r
 module "discomanager"\r
@@ -37,11 +62,11 @@ function addDiscoInfoHandler(jid, func)
        return helper:addDiscoInfoHandler(jid, func);\r
 end\r
 \r
-function set(plugin, origin, var)\r
+function set(plugin, var, origin)\r
        -- TODO handle origin and host based on plugin.\r
        local handler = function(reply, to, from, node) -- service discovery\r
                if #node == 0 then\r
-                       reply:tag("feature", {var = var});\r
+                       reply:tag("feature", {var = var}):up();\r
                        return true;\r
                end\r
        end\r