12 |
12 |
13 local t_concat = table.concat; |
13 local t_concat = table.concat; |
14 |
14 |
15 local connlisteners = require "net.connlisteners"; |
15 local connlisteners = require "net.connlisteners"; |
16 local cm_register_component = require "core.componentmanager".register_component; |
16 local cm_register_component = require "core.componentmanager".register_component; |
|
17 local cm_deregister_component = require "core.componentmanager".deregister_component; |
17 local uuid_gen = require "util.uuid".generate; |
18 local uuid_gen = require "util.uuid".generate; |
18 local sha1 = require "util.hashes".sha1; |
19 local sha1 = require "util.hashes".sha1; |
19 local st = stanza; |
20 local st = stanza; |
20 local init_xmlhandlers = require "core.xmlhandlers"; |
21 local init_xmlhandlers = require "core.xmlhandlers"; |
21 |
22 |
194 function component_listener.disconnect(conn, err) |
195 function component_listener.disconnect(conn, err) |
195 local session = sessions[conn]; |
196 local session = sessions[conn]; |
196 if session then |
197 if session then |
197 (session.log or log)("info", "component disconnected: %s (%s)", tostring(session.host), tostring(err)); |
198 (session.log or log)("info", "component disconnected: %s (%s)", tostring(session.host), tostring(err)); |
198 if session.host then |
199 if session.host then |
199 if session.component then |
200 log("debug", "deregistering component"); |
200 deregister_component(session.host); |
201 cm_deregister_component(session.host); |
201 end |
202 hosts[session.host].connected = nil; |
202 end |
203 end |
203 sessions[conn] = nil; |
204 sessions[conn] = nil; |
204 session = nil; |
205 session = nil; |
205 collectgarbage("collect"); |
206 collectgarbage("collect"); |
206 end |
207 end |