Diff

core/stanza_router.lua @ 570:f40928c94933

Fixed: Stopped tryint to send error replies on unauthed connections
author Waqas Hussain <waqas20@gmail.com>
date Sat, 06 Dec 2008 07:24:15 +0500
parent 519:cccd610a0ef9
child 615:4ae3e81513f3
line wrap: on
line diff
--- a/core/stanza_router.lua	Fri Dec 05 05:28:16 2008 +0000
+++ b/core/stanza_router.lua	Sat Dec 06 07:24:15 2008 +0500
@@ -121,30 +121,31 @@
 function core_handle_stanza(origin, stanza)
 	-- Handlers
 	if modules_handle_stanza(stanza.attr.to or origin.host, origin, stanza) then return; end
-	if origin.type == "c2s" or origin.type == "c2s_unauthed" then
-		local session = origin;
-
-		if stanza.name == "presence" and origin.roster then
-			if stanza.attr.type == nil or stanza.attr.type == "unavailable" then
-				handle_normal_presence(origin, stanza, core_route_stanza);
+	if origin.type == "c2s" or origin.type == "s2sin" then
+		if origin.type == "c2s" then
+			if stanza.name == "presence" and origin.roster then
+				if stanza.attr.type == nil or stanza.attr.type == "unavailable" then
+					handle_normal_presence(origin, stanza, core_route_stanza);
+				else
+					log("warn", "Unhandled c2s presence: %s", tostring(stanza));
+					if (stanza.attr.xmlns == "jabber:client" or stanza.attr.xmlns == "jabber:server") and stanza.attr.type ~= "error" then
+						origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); -- FIXME correct error?
+					end
+				end
 			else
-				log("warn", "Unhandled c2s presence: %s", tostring(stanza));
-				if (stanza.attr.xmlns == "jabber:client" or stanza.attr.xmlns == "jabber:server") and stanza.attr.type ~= "error" then
+				log("warn", "Unhandled c2s stanza: %s", tostring(stanza));
+				if (stanza.attr.xmlns == "jabber:client" or stanza.attr.xmlns == "jabber:server") and stanza.attr.type ~= "error" and stanza.attr.type ~= "result" then
 					origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); -- FIXME correct error?
 				end
 			end
-		else
-			log("warn", "Unhandled c2s stanza: %s", tostring(stanza));
+		else -- s2s stanzas
+			log("warn", "Unhandled s2s stanza: %s", tostring(stanza));
 			if (stanza.attr.xmlns == "jabber:client" or stanza.attr.xmlns == "jabber:server") and stanza.attr.type ~= "error" and stanza.attr.type ~= "result" then
 				origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); -- FIXME correct error?
 			end
-		end -- TODO handle other stanzas
+		end
 	else
-		log("warn", "Unhandled origin: %s", origin.type);
-		if (stanza.attr.xmlns == "jabber:client" or stanza.attr.xmlns == "jabber:server") and stanza.attr.type ~= "error" and stanza.attr.type ~= "result" then
-			-- s2s stanzas can get here
-			origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); -- FIXME correct error?
-		end
+		log("warn", "Unhandled %s stanza: %s", origin.type, tostring(stanza));
 	end
 end