diff -r a977d8be6277 -r fdc671381411 core/componentmanager.lua --- a/core/componentmanager.lua Wed Nov 10 20:42:59 2010 +0500 +++ b/core/componentmanager.lua Wed Nov 10 20:51:23 2010 +0500 @@ -6,57 +6,16 @@ -- COPYING file in the source package for more information. -- -local prosody = _G.prosody; local log = require "util.logger".init("componentmanager"); -local certmanager = require "core.certmanager"; -local configmanager = require "core.configmanager"; -local modulemanager = require "core.modulemanager"; -local jid_split = require "util.jid".split; -local fire_event = prosody.events.fire_event; -local events_new = require "util.events".new; -local st = require "util.stanza"; local prosody, hosts = prosody, prosody.hosts; -local uuid_gen = require "util.uuid".generate; - -local pairs, setmetatable, type, tostring = pairs, setmetatable, type, tostring; local components = {}; module "componentmanager" -local function default_component_handler(origin, stanza) - log("warn", "Stanza being handled by default component; bouncing error for: %s", stanza:top_tag()); - if stanza.attr.type ~= "error" and stanza.attr.type ~= "result" then - origin.send(st.error_reply(stanza, "wait", "service-unavailable", "Component unavailable")); - end -end - -function create_component(host, component, events) - -- TODO check for host well-formedness - return { type = "component", host = host, s2sout = {}, - events = events or events_new(), - dialback_secret = configmanager.get(host, "core", "dialback_secret") or uuid_gen(), - disallow_s2s = configmanager.get(host, "core", "disallow_s2s"); }; -end - function register_component(host, component) - if not hosts[host] or hosts[host].type == 'component' then - local old_events = hosts[host] and hosts[host].events; - + if hosts[host] and hosts[host].type == 'component' then components[host] = component; - hosts[host] = create_component(host, component, old_events); - - -- Add events object if not already one - if not hosts[host].events then - hosts[host].events = old_events or events_new(); - end - - if not hosts[host].dialback_secret then - hosts[host].dialback_secret = configmanager.get(host, "core", "dialback_secret") or uuid_gen(); - end - - modulemanager.load(host, "dialback"); - modulemanager.load(host, "tls"); log("debug", "component added: "..host); return hosts[host]; else @@ -66,17 +25,7 @@ function deregister_component(host) if components[host] then - modulemanager.unload(host, "tls"); - modulemanager.unload(host, "dialback"); - local host_config = configmanager.getconfig()[host]; - if host_config and ((host_config.core.enabled == nil or host_config.core.enabled) and type(host_config.core.component_module) == "string") then - -- Set default handler - components[host] = default_component_handler; - else - -- Component not in config, or disabled, remove - hosts[host] = nil; -- FIXME do proper unload of all modules and other cleanup before removing - components[host] = nil; - end + components[host] = nil; log("debug", "component removed: "..host); return true; else