mod_pubsub: Expose 'service'
[prosody.git] / net / xmppcomponent_listener.lua
index 5b791e65274b3ff41fa2c0eeb913a67706d1e7dd..58676565e7be70cf3896b970621d7565b8dd5a59 100644 (file)
@@ -15,8 +15,6 @@ local lxp = require "lxp";
 local logger = require "util.logger";
 local config = require "core.configmanager";
 local connlisteners = require "net.connlisteners";
-local cm_register_component = require "core.componentmanager".register_component;
-local cm_deregister_component = require "core.componentmanager".deregister_component;
 local uuid_gen = require "util.uuid".generate;
 local jid_split = require "util.jid".split;
 local sha1 = require "util.hashes".sha1;
@@ -67,13 +65,13 @@ end
 
 function stream_callbacks.streamopened(session, attr)
        if config.get(attr.to, "core", "component_module") ~= "component" then
-               -- Trying to act as a component domain which 
+               -- Trying to act as a component domain which
                -- hasn't been configured
                session:close{ condition = "host-unknown", text = tostring(attr.to).." does not match any configured external components" };
                return;
        end
        
-       -- Note that we don't create the internal component 
+       -- Note that we don't create the internal component
        -- until after the external component auths successfully
 
        session.host = attr.to;
@@ -203,12 +201,8 @@ function component_listener.ondisconnect(conn, err)
        local session = sessions[conn];
        if session then
                (session.log or log)("info", "component disconnected: %s (%s)", tostring(session.host), tostring(err));
-               if session.host then
-                       log("debug", "Deregistering component");
-                       cm_deregister_component(session.host);
-                       hosts[session.host].connected = nil;
-               end
-               sessions[conn]  = nil;
+               if session.on_destroy then session:on_destroy(err); end
+               sessions[conn] = nil;
                for k in pairs(session) do
                        if k ~= "log" and k ~= "close" then
                                session[k] = nil;