util.prosodyctl.check: Fix error where hostname can't be turned into A label
Where gethostname or tohostname returns an invalid name, e.g. containing
underscores or something, to_ascii would reject this and return nil,
which triggers an error in the dns lookup.
Reported by prova2 in the chat, for whom tohostname returned a long name
containing underscores.
--- a/util/prosodyctl/check.lua Thu Aug 18 03:26:32 2022 +0200
+++ b/util/prosodyctl/check.lua Wed May 31 14:08:19 2023 +0200
@@ -751,16 +751,17 @@
local fqdn = socket.dns.tohostname(socket.dns.gethostname());
if fqdn then
- do
- local res = dns.lookup(idna.to_ascii(fqdn), "A");
+ local fqdn_a = idna.to_ascii(fqdn);
+ if fqdn_a then
+ local res = dns.lookup(fqdn_a, "A");
if res then
for _, record in ipairs(res) do
external_addresses:add(record.a);
end
end
end
- do
- local res = dns.lookup(idna.to_ascii(fqdn), "AAAA");
+ if fqdn_a then
+ local res = dns.lookup(fqdn_a, "AAAA");
if res then
for _, record in ipairs(res) do
external_addresses:add(record.aaaa);