aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/s2smanager.lua14
-rw-r--r--main.lua2
-rw-r--r--plugins/mod_dialback.lua2
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;
diff --git a/main.lua b/main.lua
index 36afa58e..a9154d43 100644
--- a/main.lua
+++ b/main.lua
@@ -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,