From 25c8f0ffa440c9fe664b187cc19b322e7b37ae39 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Wed, 8 Jul 2009 03:14:12 +0100 Subject: s2smanager: Fix to correctly bounce stanzas if first connection attempt fails instantly --- core/s2smanager.lua | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'core') diff --git a/core/s2smanager.lua b/core/s2smanager.lua index 75bb5d36..e095a620 100644 --- a/core/s2smanager.lua +++ b/core/s2smanager.lua @@ -142,6 +142,7 @@ function new_outgoing(from_host, to_host) host_session.log = log; end + -- This is the first call, can't fail (the first step is DNS lookup) attempt_connection(host_session); if not host_session.sends2s then @@ -195,7 +196,13 @@ function attempt_connection(host_session, err) log("debug", to_host.." has no SRV records, falling back to A"); end -- Try with SRV, or just the plain hostname if no SRV - return try_connect(host_session, connect_host, connect_port); + local ok, err = try_connect(host_session, connect_host, connect_port); + if not ok then + if not attempt_connection(host_session, err) then + -- No more attempts will be made + destroy_session(host_session); + end + end end, "_xmpp-server._tcp."..connect_host..".", "SRV"); -- Set handler for DNS timeout @@ -239,7 +246,7 @@ function try_connect(host_session, connect_host, connect_port) local success, err = conn:connect(connect_host, connect_port); if not success and err ~= "timeout" then log("warn", "s2s connect() to %s (%s:%d) failed: %s", host_session.to_host, connect_host, connect_port, err); - return false; + return false, err; end local cl = connlisteners_get("xmppserver"); -- cgit v1.2.3