Diff

core/stanza_router.lua @ 83:79608fc8f98d

Fixed routing for IQs to bare JIDs, and added a simple IQ validity check
author Waqas Hussain <waqas20@gmail.com>
date Thu, 09 Oct 2008 01:18:48 +0500
parent 78:972e31cc91e8
child 105:b099f0f80775
line wrap: on
line diff
--- a/core/stanza_router.lua	Wed Oct 08 17:27:20 2008 +0100
+++ b/core/stanza_router.lua	Thu Oct 09 01:18:48 2008 +0500
@@ -16,9 +16,12 @@
 function core_process_stanza(origin, stanza)
 	log("debug", "Received: "..tostring(stanza))
 	-- TODO verify validity of stanza (as well as JID validity)
+	if stanza.name == "iq" and not(#stanza.tags == 1 and stanza.tags[1].attr.xmlns) then
+		error("Invalid IQ");
+	end
 
 	if origin.type == "c2s" and not origin.full_jid
-		and not(stanza.name == "iq" and stanza.tags[1] and stanza.tags[1].name == "bind"
+		and not(stanza.name == "iq" and stanza.tags[1].name == "bind"
 				and stanza.tags[1].attr.xmlns == "urn:ietf:params:xml:ns:xmpp-bind") then
 		error("Client MUST bind resource after auth");
 	end
@@ -29,6 +32,8 @@
 	
 	if not to or (hosts[to] and hosts[to].type == "local") then
 		core_handle_stanza(origin, stanza);
+	elseif to and stanza.name == "iq" and not select(3, jid_split(to)) then
+		core_handle_stanza(origin, stanza);
 	elseif origin.type == "c2s" then
 		core_route_stanza(origin, stanza);
 	end