Changeset

1229:331a68645f67

Automated merge with http://waqas.ath.cx:8000/
author Matthew Wild <mwild1@gmail.com>
date Fri, 29 May 2009 22:06:21 +0100
parents 1228:853d3d76ba94 (diff) 1227:6a587ca99109 (current diff)
children 1230:53555f58586f
files
diffstat 1 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/core/stanza_router.lua	Fri May 29 22:04:57 2009 +0100
+++ b/core/stanza_router.lua	Fri May 29 22:06:21 2009 +0100
@@ -124,7 +124,38 @@
 	local node, host, resource = jid_split(to);
 	local to_bare = node and (node.."@"..host) or host; -- bare JID
 
+	local to_type;
+	if node then
+		if resource then
+			to_type = '/full';
+		else
+			to_type = '/bare';
+		end
+	else
+		if host then
+			to_type = '/host';
+		else
+			to_type = '/bare';
+		end
+	end
+
 	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
+	end
+	local h = hosts[to_bare] or hosts[host or origin.host];
+	if h then
+		if h.type == "component" then
+			component_handle_stanza(origin, stanza);
+			return;
+		else
+			if h.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
 		-- event handled
 	elseif stanza.name == "presence" and origin.host and fire_event(origin.host.."/"..stanza.name, event_data) then