aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/componentmanager.lua6
-rw-r--r--core/stanza_router.lua9
-rw-r--r--net/xmppclient_listener.lua1
3 files changed, 10 insertions, 6 deletions
diff --git a/core/componentmanager.lua b/core/componentmanager.lua
index ff60de28..8f624f15 100644
--- a/core/componentmanager.lua
+++ b/core/componentmanager.lua
@@ -89,6 +89,12 @@ function register_component(host, component, session)
if not hosts[host] or (hosts[host].type == 'component' and not hosts[host].connected) then
components[host] = component;
hosts[host] = session or create_component(host, component);
+
+ -- Add events object if not already one
+ if not hosts[host].events then
+ hosts[host].events = events_new();
+ end
+
-- add to disco_items
if not(host:find("@", 1, true) or host:find("/", 1, true)) and host:find(".", 1, true) then
disco_items:set(host:sub(host:find(".", 1, true)+1), host, true);
diff --git a/core/stanza_router.lua b/core/stanza_router.lua
index 4ade0055..58dd820d 100644
--- a/core/stanza_router.lua
+++ b/core/stanza_router.lua
@@ -127,7 +127,7 @@ function core_process_stanza(origin, stanza)
else
event = "stanza/"..stanza.attr.xmlns..":"..stanza.name;
end
- if h.events.fire_event(event, {origin = origin, stanza = stanza}) then return; end
+ if (h.events or prosody.events).fire_event(event, {origin = origin, stanza = stanza}) then return; end
end
modules_handle_stanza(host or origin.host or origin.to_host, origin, stanza);
end
@@ -155,7 +155,7 @@ function core_post_stanza(origin, stanza)
local event_data = {origin=origin, stanza=stanza};
if origin.full_jid then -- c2s connection
- if hosts[origin.host].events.fire_event('pre-'..stanza.name..to_type, event_data) then return; end -- do preprocessing
+ if (hosts[origin.host].events or prosody.events).fire_event('pre-'..stanza.name..to_type, event_data) then return; end -- do preprocessing
end
local h = hosts[to_bare] or hosts[host or origin.host];
if h then
@@ -163,11 +163,8 @@ function core_post_stanza(origin, stanza)
component_handle_stanza(origin, stanza);
return;
else
- if h.events.fire_event(stanza.name..to_type, event_data) then return; end -- do processing
+ if (h.events or prosody.events).fire_event(stanza.name..to_type, event_data) then return; end -- do processing
end
- else -- non-local recipient
- core_route_stanza(origin, stanza);
- return;
end
if host and fire_event(host.."/"..stanza.name, event_data) then
diff --git a/net/xmppclient_listener.lua b/net/xmppclient_listener.lua
index ca892c17..617f0467 100644
--- a/net/xmppclient_listener.lua
+++ b/net/xmppclient_listener.lua
@@ -115,6 +115,7 @@ function xmppclient.listener(conn, data)
session.log("info", "Client connected");
+ -- Client is using legacy SSL (otherwise mod_tls sets this flag)
if conn.ssl() then
session.secure = true;
end