Changeset

1167:5620ea24be94

stanza_router: Removed global function core_handle_stanza
author Waqas Hussain <waqas20@gmail.com>
date Sat, 16 May 2009 01:41:45 +0500
parents 1166:5499a028d4ae
children 1168:dd523bfc9ea9
files core/modulemanager.lua core/stanza_router.lua
diffstat 2 files changed, 12 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/core/modulemanager.lua	Fri May 15 20:38:30 2009 +0100
+++ b/core/modulemanager.lua	Sat May 16 01:41:45 2009 +0500
@@ -226,7 +226,14 @@
 		(handlers[1])(origin, stanza);
 		return true;
 	else
-		log("debug", "Stanza unhandled by any modules, xmlns: %s", stanza.attr.xmlns); -- we didn't handle it
+		log("debug", "Unhandled %s stanza: %s; xmlns=%s", origin.type, stanza.name, xmlns); -- we didn't handle it
+		if stanza.attr.xmlns == "jabber:client" then
+			if stanza.attr.type ~= "error" and stanza.attr.type ~= "result" then
+				origin.send(st.error_reply(stanza, "cancel", "service-unavailable"));
+			end
+		else
+			origin:close("unsupported-stanza-type");
+		end
 	end
 end
 
--- a/core/stanza_router.lua	Fri May 15 20:38:30 2009 +0100
+++ b/core/stanza_router.lua	Sat May 16 01:41:45 2009 +0500
@@ -113,9 +113,9 @@
 		if fire_event(tostring(host or origin.host).."/"..stanza.name, event_data) then
 			-- event handled
 		elseif not to then
-			core_handle_stanza(origin, stanza);
+			modules_handle_stanza(host or origin.host or origin.to_host, origin, stanza);
 		elseif hosts[to] and hosts[to].type == "local" then -- directed at a local server
-			core_handle_stanza(origin, stanza);
+			modules_handle_stanza(host or origin.host or origin.to_host, origin, stanza);
 		elseif hosts[to] and hosts[to].type == "component" then -- hack to allow components to handle node@server/resource and server/resource
 			component_handle_stanza(origin, stanza);
 		elseif hosts[to_bare] and hosts[to_bare].type == "component" then -- hack to allow components to handle node@server
@@ -123,27 +123,12 @@
 		elseif hosts[host] and hosts[host].type == "component" then -- directed at a component
 			component_handle_stanza(origin, stanza);
 		elseif hosts[host] and hosts[host].type == "local" and stanza.name == "iq" and not resource then -- directed at bare JID
-			core_handle_stanza(origin, stanza);
+			modules_handle_stanza(host or origin.host or origin.to_host, origin, stanza);
 		else
 			core_route_stanza(origin, stanza);
 		end
 	else
-		core_handle_stanza(origin, stanza);
-	end
-end
-
--- This function handles stanzas which are not routed any further,
--- that is, they are handled by this server
-function core_handle_stanza(origin, stanza)
-	if not modules_handle_stanza(select(2, jid_split(stanza.attr.to)) or origin.host or origin.to_host, origin, stanza) then
-		log("warn", "Unhandled %s stanza: %s", origin.type, tostring(stanza));
-		if stanza.attr.xmlns == "jabber:client" then
-			if stanza.attr.type ~= "error" and stanza.attr.type ~= "result" then
-				origin.send(st.error_reply(stanza, "cancel", "service-unavailable"));
-			end
-		else
-			origin:close("unsupported-stanza-type");
-		end
+		modules_handle_stanza(host or origin.host or origin.to_host, origin, stanza);
 	end
 end