aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2010-12-24 04:58:09 +0000
committerMatthew Wild <mwild1@gmail.com>2010-12-24 04:58:09 +0000
commit1688fab4436f77d702795485b21bca6f252ab9e8 (patch)
tree44d59452785cac7f264b2747f6211c4fa4b38723
parent8bacb473e3e5ed144a1bbe6b65228cb7d79440eb (diff)
downloadprosody-1688fab4436f77d702795485b21bca6f252ab9e8.tar.gz
prosody-1688fab4436f77d702795485b21bca6f252ab9e8.zip
s2smanager: Destroy session on immediate failure of a connection attempt (e.g. inability to create sockets)
-rw-r--r--core/s2smanager.lua8
1 files changed, 7 insertions, 1 deletions
diff --git a/core/s2smanager.lua b/core/s2smanager.lua
index 58bd73d1..7e6f8135 100644
--- a/core/s2smanager.lua
+++ b/core/s2smanager.lua
@@ -306,7 +306,13 @@ function try_connect(host_session, connect_host, connect_port)
if reply and reply[#reply] and reply[#reply].a then
log("debug", "DNS reply for %s gives us %s", connect_host, reply[#reply].a);
- return make_connect(host_session, reply[#reply].a, connect_port);
+ local ok, err = make_connect(host_session, reply[#reply].a, connect_port);
+ if not ok then
+ if not attempt_connection(host_session, err or "closed") then
+ err = err and (": "..err) or "";
+ destroy_session(host_session, "Connection failed"..err);
+ end
+ end
else
log("debug", "DNS lookup failed to get a response for %s", connect_host);
if not attempt_connection(host_session, "name resolution failed") then -- Retry if we can