Diff

client.lua @ 37:0ccd523e110a

verse.client: Don't hook the stanza event every time a stanza comes in :)
author Matthew Wild <mwild1@gmail.com>
date Mon, 21 Dec 2009 14:25:44 +0000
parent 30:9c96318913f7
child 38:c40cc28ac7df
line wrap: on
line diff
--- a/client.lua	Sun Dec 20 22:07:20 2009 +0000
+++ b/client.lua	Mon Dec 21 14:25:44 2009 +0000
@@ -33,23 +33,6 @@
 	elseif stanza.attr.xmlns then
 		return stream:event("stream/"..stanza.attr.xmlns, stanza);
 	end
-	
-	stream:hook("stanza", function (stanza)
-		if stanza.attr.xmlns == nil or stanza.attr.xmlns == "jabber:client" then
-			if stanza.name == "iq" and (stanza.attr.type == "get" or stanza.attr.type == "set") then
-				local xmlns = stanza.tags[1] and stanza.tags[1].attr.xmlns;
-				if xmlns then
-					ret = stream:event("iq/"..xmlns, stanza);
-					if not ret then
-						ret = stream:event("iq", stanza);
-					end
-				end
-			else
-				ret = stream:event(stanza.name, stanza);
-			end
-		end
-		return ret;
-	end, -1);
 
 	return stream:event("stanza", stanza);
 end
@@ -89,6 +72,23 @@
 		end
 	end);
 	
+	self:hook("stanza", function (stanza)
+		if stanza.attr.xmlns == nil or stanza.attr.xmlns == "jabber:client" then
+			if stanza.name == "iq" and (stanza.attr.type == "get" or stanza.attr.type == "set") then
+				local xmlns = stanza.tags[1] and stanza.tags[1].attr.xmlns;
+				if xmlns then
+					ret = self:event("iq/"..xmlns, stanza);
+					if not ret then
+						ret = self:event("iq", stanza);
+					end
+				end
+			else
+				ret = self:event(stanza.name, stanza);
+			end
+		end
+		return ret;
+	end, -1);
+
 	-- Initialise connection
 	self:connect(self.connect_host or self.host, self.connect_port or 5222);
 	--reset_stream(self);