modulemanager initializes hosts[host] if it isn't already initialized when loading...
[prosody.git] / core / modulemanager.lua
index 8292eaa5d0d4147ce92cab7cad93fb1aecf3b981..5afe31440cb4395add4355b8f0a6bc151196df94 100644 (file)
@@ -1,20 +1,9 @@
--- Prosody IM v0.2
--- Copyright (C) 2008 Matthew Wild
--- Copyright (C) 2008 Waqas Hussain
+-- Prosody IM v0.3
+-- 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.
 --
 
 
@@ -101,7 +90,9 @@ function load(host, module_name, config)
        
        if not modulemap[host] then
                modulemap[host] = {};
-       elseif modulemap[host][module_name] then
+       end
+       
+       if modulemap[host][module_name] then
                log("warn", "%s is already loaded for %s, so not loading again", module_name, host);
                return nil, "module-already-loaded";
        elseif modulemap["*"][module_name] then
@@ -121,6 +112,7 @@ function load(host, module_name, config)
        local pluginenv = setmetatable({ module = api_instance }, { __index = _G });
        
        setfenv(mod, pluginenv);
+       if not hosts[host] then hosts[host] = { type = "component", host = host, connected = false, s2sout = {} }; end
        
        local success, ret = pcall(mod);
        if not success then