local opt_keepalives = module:get_option_boolean("tcp_keepalives", false);
local sessions = module:shared("sessions");
+local core_process_stanza = prosody.core_process_stanza;
local stream_callbacks = { default_ns = "jabber:client", handlestanza = core_process_stanza };
local listener = {};
end
if reason then -- nil == no err, initiated by us, false == initiated by client
if type(reason) == "string" then -- assume stream error
- log("info", "Disconnecting client, <stream:error> is: %s", reason);
+ log("debug", "Disconnecting client, <stream:error> is: %s", reason);
session.send(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' }));
elseif type(reason) == "table" then
if reason.condition then
if reason.extra then
stanza:add_child(reason.extra);
end
- log("info", "Disconnecting client, <stream:error> is: %s", tostring(stanza));
+ log("debug", "Disconnecting client, <stream:error> is: %s", tostring(stanza));
session.send(stanza);
elseif reason.name then -- a stanza
- log("info", "Disconnecting client, <stream:error> is: %s", tostring(reason));
+ log("debug", "Disconnecting client, <stream:error> is: %s", tostring(reason));
session.send(reason);
end
end
end
end
+module:hook_global("user-deleted", function(event)
+ local username, host = event.username, event.host;
+ local user = hosts[host].sessions[username];
+ if user and user.sessions then
+ for jid, session in pairs(user.sessions) do
+ session:close{ condition = "not-authorized", text = "Account deleted" };
+ end
+ end
+end, 200);
+
--- Port listener
function listener.onconnect(conn)
local session = sm_new_session(conn);
sessions[conn] = session;
end
-module:add_item("net-provider", {
+module:provides("net", {
name = "c2s";
listener = listener;
default_port = 5222;
};
});
-module:add_item("net-provider", {
+module:provides("net", {
name = "legacy_ssl";
listener = listener;
encryption = "ssl";