projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net.dns: Support for resolving AAAA records
[prosody.git]
/
net
/
dns.lua
diff --git
a/net/dns.lua
b/net/dns.lua
index 61fb62e8e2f6855f5f2117bcb74f977b46dfe21e..3f1cb4f687ffc917b53e2ca5dfadc7aba65082ca 100644
(file)
--- a/
net/dns.lua
+++ b/
net/dns.lua
@@
-158,8
+158,6
@@
resolver.__index = resolver;
resolver.timeout = default_timeout;
resolver.timeout = default_timeout;
-local SRV_tostring;
-
local function default_rr_tostring(rr)
local rr_val = rr.type and rr[rr.type:lower()];
if type(rr_val) ~= "string" then
local function default_rr_tostring(rr)
local rr_val = rr.type and rr[rr.type:lower()];
if type(rr_val) ~= "string" then
@@
-170,8
+168,13
@@
end
local special_tostrings = {
LOC = resolver.LOC_tostring;
local special_tostrings = {
LOC = resolver.LOC_tostring;
- MX = function (rr) return string.format('%2i %s', rr.pref, rr.mx); end;
- SRV = SRV_tostring;
+ MX = function (rr)
+ return string.format('%2i %s', rr.pref, rr.mx);
+ end;
+ SRV = function (rr)
+ local s = rr.srv;
+ return string.format('%5d %5d %5d %s', s.priority, s.weight, s.port, s.target);
+ end;
};
local rr_metatable = {}; -- - - - - - - - - - - - - - - - - - - rr_metatable
};
local rr_metatable = {}; -- - - - - - - - - - - - - - - - - - - rr_metatable
@@
-386,6
+389,14
@@
function resolver:A(rr) -- - - - - - - - - - - - - - - - - - - - - - - - A
rr.a = string.format('%i.%i.%i.%i', b1, b2, b3, b4);
end
rr.a = string.format('%i.%i.%i.%i', b1, b2, b3, b4);
end
+function resolver:AAAA(rr)
+ local addr = {};
+ for i = 1, rr.rdlength, 2 do
+ local b1, b2 = self:byte(2);
+ table.insert(addr, ("%02x%02x"):format(b1, b2));
+ end
+ rr.aaaa = table.concat(addr, ":");
+end
function resolver:CNAME(rr) -- - - - - - - - - - - - - - - - - - - - CNAME
rr.cname = self:name();
function resolver:CNAME(rr) -- - - - - - - - - - - - - - - - - - - - CNAME
rr.cname = self:name();
@@
-475,14
+486,8
@@
function resolver:PTR(rr)
rr.ptr = self:name();
end
rr.ptr = self:name();
end
-function SRV_tostring(rr) -- - - - - - - - - - - - - - - - - - SRV_tostring
- local s = rr.srv;
- return string.format( '%5d %5d %5d %s', s.priority, s.weight, s.port, s.target );
-end
-
-
function resolver:TXT(rr) -- - - - - - - - - - - - - - - - - - - - - - TXT
function resolver:TXT(rr) -- - - - - - - - - - - - - - - - - - - - - - TXT
- rr.txt = self:sub (
rr.rdlength
);
+ rr.txt = self:sub (
self:byte()
);
end
end