Changeset

559:fa4a51fe6442

Remove an incorrect line which I didn't add, and fix the proper way. Corrects the sending of stanzas over unauthed s2sout's. Also fixes mod_dialback to send stanzas and not strings.
author Matthew Wild <mwild1@gmail.com>
date Fri, 05 Dec 2008 05:23:42 +0000
parents 558:ab3960421356
children 560:6c07f15a34f4
files core/s2smanager.lua net/xmppclient_listener.lua plugins/mod_dialback.lua
diffstat 3 files changed, 14 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/core/s2smanager.lua	Fri Dec 05 04:44:19 2008 +0000
+++ b/core/s2smanager.lua	Fri Dec 05 05:23:42 2008 +0000
@@ -52,11 +52,10 @@
 local function compare_srv_priorities(a,b) return a.priority < b.priority or a.weight < b.weight; end
 
 function send_to_host(from_host, to_host, data)
-	if data.name then data = tostring(data); end
 	local host = hosts[from_host].s2sout[to_host];
 	if host then
 		-- We have a connection to this host already
-		if host.type == "s2sout_unauthed" and (data.xmlns == "jabber:client" or data.xmlns == "jabber:server") then
+		if host.type == "s2sout_unauthed" and data.name ~= "db:verify" and ((not data.xmlns) or data.xmlns == "jabber:client" or data.xmlns == "jabber:server") then
 			(host.log or log)("debug", "trying to send over unauthed s2sout to "..to_host);
 			if not host.notopen and not host.dialback_key then
 				host.log("debug", "dialback had not been initiated");
@@ -64,9 +63,9 @@
 			end
 			
 			-- Queue stanza until we are able to send it
-			if host.sendq then t_insert(host.sendq, data);
-			else host.sendq = { data }; end
-			host.log("debug", "stanza queued");
+			if host.sendq then t_insert(host.sendq, tostring(data));
+			else host.sendq = { tostring(data) }; end
+			host.log("debug", "stanza [%s] queued ", data.name);
 		elseif host.type == "local" or host.type == "component" then
 			log("error", "Trying to send a stanza to ourselves??")
 			log("error", "Traceback: %s", get_traceback());
@@ -85,7 +84,7 @@
 		log("debug", "opening a new outgoing connection for this stanza");
 		local host_session = new_outgoing(from_host, to_host);
 		-- Store in buffer
-		host_session.sendq = { data };
+		host_session.sendq = { tostring(data) };
 	end
 end
 
--- a/net/xmppclient_listener.lua	Fri Dec 05 04:44:19 2008 +0000
+++ b/net/xmppclient_listener.lua	Fri Dec 05 05:23:42 2008 +0000
@@ -47,6 +47,11 @@
 	end
 end
 
+local function handleerr(err) print("Traceback:", err, debug.traceback()); end
+function stream_callbacks.handlestanza(a, b)
+	xpcall(function () core_process_stanza(a, b) end, handleerr);
+end
+
 local sessions = {};
 local xmppclient = { default_port = 5222, default_mode = "*a" };
 
--- a/plugins/mod_dialback.lua	Fri Dec 05 04:44:19 2008 +0000
+++ b/plugins/mod_dialback.lua	Fri Dec 05 05:23:42 2008 +0000
@@ -24,6 +24,8 @@
 local s2s_make_authenticated = require "core.s2smanager".make_authenticated;
 local s2s_verify_dialback = require "core.s2smanager".verify_dialback;
 
+local st = require "util.stanza";
+
 local log = require "util.logger".init("mod_dialback");
 
 local xmlns_dialback = "jabber:server:dialback";
@@ -42,7 +44,7 @@
 			type = "invalid"
 			log("warn", "Asked to verify a dialback key that was incorrect. An imposter is claiming to be %s?", attr.to);
 		end
-		log("debug", "verifyied dialback key... it is %s", type);
+		log("debug", "verified dialback key... it is %s", type);
 		origin.sends2s(format("<db:verify from='%s' to='%s' id='%s' type='%s'>%s</db:verify>", attr.to, attr.from, attr.id, type, stanza[1]));
 	end);
 
@@ -57,8 +59,7 @@
 		origin.dialback_key = stanza[1];
 		log("debug", "asking %s if key %s belongs to them", origin.from_host, origin.dialback_key);
 		send_s2s(origin.to_host, origin.from_host,
-			format("<db:verify from='%s' to='%s' id='%s'>%s</db:verify>", origin.to_host, origin.from_host,
-				origin.streamid, origin.dialback_key));
+			st.stanza("db:verify", { from = origin.to_host, to = origin.from_host, id = origin.streamid }):text(origin.dialback_key));
 		hosts[origin.to_host].s2sout[origin.from_host].dialback_verifying = origin;
 	end);