diff options
author | Matthew Wild <mwild1@gmail.com> | 2012-07-22 16:17:04 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2012-07-22 16:17:04 +0100 |
commit | ee00b67dda02d48311283482a86543bb7640b898 (patch) | |
tree | bd38865e007bc2f31f544f29af24f0a6d6ead7aa /plugins/mod_s2s/s2sout.lib.lua | |
parent | 7adc50d2fdbe6086f43a6f125aafac86cb8d2ed0 (diff) | |
download | prosody-ee00b67dda02d48311283482a86543bb7640b898.tar.gz prosody-ee00b67dda02d48311283482a86543bb7640b898.zip |
mod_s2s/s2sout.lib: Don't wait for both v4 and v6 DNS responses if we only send one (e.g. because v6 is disabled)
Diffstat (limited to 'plugins/mod_s2s/s2sout.lib.lua')
-rw-r--r-- | plugins/mod_s2s/s2sout.lib.lua | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/plugins/mod_s2s/s2sout.lib.lua b/plugins/mod_s2s/s2sout.lib.lua index 48a49036..6e1eb3d7 100644 --- a/plugins/mod_s2s/s2sout.lib.lua +++ b/plugins/mod_s2s/s2sout.lib.lua @@ -170,7 +170,7 @@ function s2sout.try_connect(host_session, connect_host, connect_port, err) local IPs = {}; host_session.ip_hosts = IPs; local handle4, handle6; - local has_other = false; + local have_other_result = not(has_ipv4) or not(has_ipv6) or false; if has_ipv4 then handle4 = adns.lookup(function (reply, err) @@ -195,7 +195,7 @@ function s2sout.try_connect(host_session, connect_host, connect_port, err) end end - if has_other then + if have_other_result then if #IPs > 0 then rfc3484_dest(host_session.ip_hosts, sources); for i = 1, #IPs do @@ -213,11 +213,11 @@ function s2sout.try_connect(host_session, connect_host, connect_port, err) end end else - has_other = true; + have_other_result = true; end end, connect_host, "A", "IN"); else - has_other = true; + have_other_result = true; end if has_ipv6 then @@ -231,7 +231,7 @@ function s2sout.try_connect(host_session, connect_host, connect_port, err) end end - if has_other then + if have_other_result then if #IPs > 0 then rfc3484_dest(host_session.ip_hosts, sources); for i = 1, #IPs do @@ -249,13 +249,12 @@ function s2sout.try_connect(host_session, connect_host, connect_port, err) end end else - has_other = true; + have_other_result = true; end end, connect_host, "AAAA", "IN"); else - has_other = true; + have_other_result = true; end - return true; elseif host_session.ip_hosts and #host_session.ip_hosts > host_session.ip_choice then -- Not our first attempt, and we also have IPs left to try s2sout.try_next_ip(host_session); |