diff options
author | Matthew Wild <mwild1@gmail.com> | 2008-11-14 02:54:56 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2008-11-14 02:54:56 +0000 |
commit | 22df06d27db30cae5c7d3361a4fe51ab9a89dcbc (patch) | |
tree | 3d632e375aca4712448301b7a3a968b855db54bd | |
parent | 428fc65bbc595d80cb678dadcc9ea7cae055d5b9 (diff) | |
download | prosody-22df06d27db30cae5c7d3361a4fe51ab9a89dcbc.tar.gz prosody-22df06d27db30cae5c7d3361a4fe51ab9a89dcbc.zip |
Now outgoing s2s sessions are associated with their from_host, fixes #15
-rw-r--r-- | core/s2smanager.lua | 14 | ||||
-rw-r--r-- | main.lua | 2 | ||||
-rw-r--r-- | plugins/mod_dialback.lua | 2 |
3 files changed, 9 insertions, 9 deletions
diff --git a/core/s2smanager.lua b/core/s2smanager.lua index 6d00ff6e..3f286d0e 100644 --- a/core/s2smanager.lua +++ b/core/s2smanager.lua @@ -32,7 +32,7 @@ function connect_host(from_host, to_host) end function send_to_host(from_host, to_host, data) - local host = hosts[to_host]; + local host = hosts[from_host].s2sout[to_host]; if host then -- We have a connection to this host already if host.type == "s2sout_unauthed" then @@ -52,12 +52,12 @@ function send_to_host(from_host, to_host, data) else (host.log or log)("debug", "going to send stanza to "..to_host.." from "..from_host); -- FIXME - if hosts[to_host].from_host ~= from_host then + if host.from_host ~= from_host then log("error", "WARNING! This might, possibly, be a bug, but it might not..."); - log("error", "We are going to send from %s instead of %s", hosts[to_host].from_host, from_host); + log("error", "We are going to send from %s instead of %s", host.from_host, from_host); end - hosts[to_host].sends2s(data); - host.log("debug", "stanza sent over "..hosts[to_host].type); + host.sends2s(data); + host.log("debug", "stanza sent over "..host.type); end else log("debug", "opening a new outgoing connection for this stanza"); @@ -87,7 +87,7 @@ end function new_outgoing(from_host, to_host) local host_session = { to_host = to_host, from_host = from_host, notopen = true, type = "s2sout_unauthed", direction = "outgoing" }; - hosts[to_host] = host_session; + hosts[from_host].s2sout[to_host] = host_session; local cl = connlisteners_get("xmppserver"); local conn, handler = socket.tcp() @@ -225,7 +225,7 @@ end function destroy_session(session) (session.log or log)("info", "Destroying "..tostring(session.direction).." session "..tostring(session.from_host).."->"..tostring(session.to_host)); if session.direction == "outgoing" then - hosts[session.to_host] = nil; + hosts[session.from_host].s2sout[session.to_host] = nil; end session.conn = nil; session.disconnect = nil; @@ -17,7 +17,7 @@ hosts = {}; if config.hosts and #config.hosts > 0 then for _, host in pairs(config.hosts) do - hosts[host] = {type = "local", connected = true, sessions = {}, host = host}; + hosts[host] = {type = "local", connected = true, sessions = {}, host = host, s2sout = {} }; end else error("No hosts defined in the configuration file"); end diff --git a/plugins/mod_dialback.lua b/plugins/mod_dialback.lua index d0c1dd6f..c17cbcaf 100644 --- a/plugins/mod_dialback.lua +++ b/plugins/mod_dialback.lua @@ -39,7 +39,7 @@ add_handler("s2sin_unauthed", "result", xmlns_dialback, 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)); - hosts[origin.from_host].dialback_verifying = origin; + hosts[origin.to_host].s2sout[origin.from_host].dialback_verifying = origin; end); add_handler({ "s2sout_unauthed", "s2sout" }, "verify", xmlns_dialback, |