Change xmlhandlers to match stream opening tag with ns+tag

Tue, 16 Dec 2008 02:33:08 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Tue, 16 Dec 2008 02:33:08 +0000
changeset 625
cad4dcfbf295
parent 624
04fe1a00aa16
child 628
f0a4498ae996

Change xmlhandlers to match stream opening tag with ns+tag

core/xmlhandlers.lua file | annotate | diff | comparison | revisions
net/xmppclient_listener.lua file | annotate | diff | comparison | revisions
net/xmppserver_listener.lua file | annotate | diff | comparison | revisions
--- a/core/xmlhandlers.lua	Tue Dec 16 02:32:01 2008 +0000
+++ b/core/xmlhandlers.lua	Tue Dec 16 02:33:08 2008 +0000
@@ -47,29 +47,27 @@
 
 function init_xmlhandlers(session, stream_callbacks)
 		local ns_stack = { "" };
-		local curr_ns = "";
+		local curr_ns, name = "";
 		local curr_tag;
 		local chardata = {};
 		local xml_handlers = {};
 		local log = session.log or default_log;
-
-		local send = session.send;
 		
 		local cb_streamopened = stream_callbacks.streamopened;
 		local cb_streamclosed = stream_callbacks.streamclosed;
 		local cb_error = stream_callbacks.error or function (session, e) error("XML stream error: "..tostring(e)); end;
 		local cb_handlestanza = stream_callbacks.handlestanza;
 		
-		local stream_ns = stream_callbacks.ns;
+		local stream_tag = stream_callbacks.stream_tag;
 		
 		local stanza
-		function xml_handlers:StartElement(name, attr)
+		function xml_handlers:StartElement(tagname, attr)
 			if stanza and #chardata > 0 then
 				-- We have some character data in the buffer
 				stanza:text(t_concat(chardata));
 				chardata = {};
 			end
-			curr_ns,name = name:match("^(.+)|([%w%-]+)$");
+			local curr_ns,name = tagname:match("^(.+)|([%w%-]+)$");
 			if curr_ns ~= "jabber:server" then
 				attr.xmlns = curr_ns;
 			end
@@ -91,7 +89,7 @@
 			
 			if not stanza then --if we are not currently inside a stanza
 				if session.notopen then
-					if name == "stream" and curr_ns == stream_ns then
+					if tagname == stream_tag then
 						if cb_streamopened then
 							cb_streamopened(session, attr);
 						end
@@ -120,10 +118,10 @@
 				t_insert(chardata, data);
 			end
 		end
-		function xml_handlers:EndElement(name)
-			curr_ns,name = name:match("^(.+)|([%w%-]+)$");
+		function xml_handlers:EndElement(tagname)
+			curr_ns,name = tagname:match("^(.+)|([%w%-]+)$");
 			if (not stanza) or (#stanza.last_add > 0 and name ~= stanza.last_add[#stanza.last_add].name) then 
-				if name == "stream" then
+				if tagname == stream_tag then
 					if cb_streamclosed then
 						cb_streamclosed(session);
 					end
--- a/net/xmppclient_listener.lua	Tue Dec 16 02:32:01 2008 +0000
+++ b/net/xmppclient_listener.lua	Tue Dec 16 02:33:08 2008 +0000
@@ -36,7 +36,7 @@
 local sm_streamclosed = sessionmanager.streamclosed;
 local st = stanza;
 
-local stream_callbacks = { ns = "http://etherx.jabber.org/streams", streamopened = sm_streamopened, streamclosed = sm_streamclosed, handlestanza = core_process_stanza };
+local stream_callbacks = { stream_tag = "http://etherx.jabber.org/streams|stream", streamopened = sm_streamopened, streamclosed = sm_streamclosed, handlestanza = core_process_stanza };
 
 function stream_callbacks.error(session, error, data)
 	if error == "no-stream" then
--- a/net/xmppserver_listener.lua	Tue Dec 16 02:32:01 2008 +0000
+++ b/net/xmppserver_listener.lua	Tue Dec 16 02:33:08 2008 +0000
@@ -28,7 +28,7 @@
 local s2s_streamclosed = require "core.s2smanager".streamclosed;
 local s2s_destroy_session = require "core.s2smanager".destroy_session;
 local s2s_attempt_connect = require "core.s2smanager".attempt_connection;
-local stream_callbacks = { ns = "http://etherx.jabber.org/streams", streamopened = s2s_streamopened, streamclosed = s2s_streamclosed, handlestanza =  core_process_stanza };
+local stream_callbacks = { stream_tag = "http://etherx.jabber.org/streams|stream", streamopened = s2s_streamopened, streamclosed = s2s_streamclosed, handlestanza =  core_process_stanza };
 
 function stream_callbacks.error(session, error, data)
 	if error == "no-stream" then

mercurial