s2smanager: Pass A-record lookups through adns module

vault/0.11
Matthew Wild 17 years ago
parent 97c697c83e
commit 44ea588e98
  1. 30
      core/s2smanager.lua

@ -173,7 +173,7 @@ function attempt_connection(host_session, err)
if not err then -- This is our first attempt
log("debug", "First attempt to connect to %s, starting with SRV lookup...", to_host);
host_session.connecting = true;
local answer, handle;
local handle;
handle = adns.lookup(function (answer)
handle = nil;
host_session.connecting = nil;
@ -235,6 +235,34 @@ function attempt_connection(host_session, err)
end
function try_connect(host_session, connect_host, connect_port)
host_session.connecting = true;
local handle;
handle = adns.lookup(function (reply)
handle = nil;
host_session.connecting = nil;
if reply and reply[1] and reply[1].a then
log("debug", "DNS reply for %s gives us %s", connect_host, reply[1].a);
return make_connect(host_session, reply[1].a, connect_port);
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
log("debug", "No other records to try for %s - destroying", host_session.to_host);
destroy_session(host_session); -- End of the line, we can't
end
end
end, connect_host, "A", "IN");
-- Set handler for DNS timeout
add_task(dns_timeout, function ()
if handle then
adns.cancel(handle, true);
end
end);
return true;
end
function make_connect(host_session, connect_host, connect_port)
host_session.log("info", "Beginning new connection attempt to %s (%s:%d)", host_session.to_host, connect_host, connect_port);
-- Ok, we're going to try to connect

Loading…
Cancel
Save