Update mod_selftests to use the hosts on http://xmpp.org/interop/servers.shtml
[prosody.git] / core / modulemanager.lua
index 3e1dfa305b3ff406407cff906c8eaba1c80c18df..d313130c0e334c1b6a0876c9616a3017a23be7b2 100644 (file)
@@ -10,6 +10,7 @@ local type = type;
 local tostring, print = tostring, print;
 
 local _G = _G;
+local debug = debug;
 
 module "modulemanager"
 
@@ -68,7 +69,7 @@ function load(name)
        local mod, err = loadfile("plugins/mod_"..name..".lua");
        if not mod then
                log("error", "Unable to load module '%s': %s", name or "nil", err or "nil");
-               return;
+               return nil, err;
        end
        
        local pluginenv = setmetatable({ module = { name = name } }, { __index = modulehelpers });
@@ -77,8 +78,9 @@ function load(name)
        local success, ret = pcall(mod);
        if not success then
                log("error", "Error initialising module '%s': %s", name or "nil", ret or "nil");
-               return;
+               return nil, ret;
        end
+       return true;
 end
 
 function handle_stanza(origin, stanza)
@@ -88,14 +90,13 @@ function handle_stanza(origin, stanza)
                log("debug", "Stanza is an <iq/>");
                local child = stanza.tags[1];
                if child then
-                       local xmlns = child.attr.xmlns;
-                       log("debug", "Stanza has xmlns: %s", xmlns);
-                       local handler = handlers[origin_type][name][xmlns];
-                       if  handler then
+                       local xmlns = child.attr.xmlns or xmlns;
+                       log("debug", "Stanza of type %s from %s has xmlns: %s", name, origin_type, xmlns);
+                       local handler = handlers[origin_type][name] and handlers[origin_type][name][xmlns];
+                       if handler then
                                log("debug", "Passing stanza to mod_%s", handler_info[handler].name);
                                return handler(origin, stanza) or true;
                        end
-
                end
        elseif handlers[origin_type] then
                local handler = handlers[origin_type][name];