# HG changeset patch # User Matthew Wild # Date 1228454622 0 # Node ID fa4a51fe6442048158e4d91fad0af9a8d79ba1b8 # Parent ab3960421356ff8407117415d0e817d158f97ee4 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. diff -r ab3960421356 -r fa4a51fe6442 core/s2smanager.lua --- 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 diff -r ab3960421356 -r fa4a51fe6442 net/xmppclient_listener.lua --- 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" }; diff -r ab3960421356 -r fa4a51fe6442 plugins/mod_dialback.lua --- 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("%s", 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("%s", 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);