Software /
code /
prosody
Diff
net/dns.lua @ 8902:ac21f13798ae
Merge 0.10->trunk
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 09 Jun 2018 15:47:59 +0200 |
parent | 8555:4f0f5b49bb03 |
parent | 8901:eae606b9266c |
child | 8903:c5d5dfaa8d38 |
line wrap: on
line diff
--- a/net/dns.lua Sun Jun 03 00:57:51 2018 +0200 +++ b/net/dns.lua Sat Jun 09 15:47:59 2018 +0200 @@ -88,9 +88,10 @@ end -local function augment (t) -- - - - - - - - - - - - - - - - - - - - augment +local function augment (t, prefix) -- - - - - - - - - - - - - - - - - augment local a = {}; - for i,s in pairs(t) do + for i = 1, 0xffff do + local s = t[i] or ("%s%d"):format(prefix, i); a[i] = s; a[s] = s; a[string.lower(s)] = s; @@ -121,8 +122,8 @@ dns.classes = { 'IN', 'CS', 'CH', 'HS', [255] = '*' }; -dns.type = augment (dns.types); -dns.class = augment (dns.classes); +dns.type = augment (dns.types, "TYPE"); +dns.class = augment (dns.classes, "CLASS"); dns.typecode = encode (dns.types); dns.classcode = encode (dns.classes); @@ -686,7 +687,7 @@ self.cache = self.cache or setmetatable({}, cache_metatable); local rrs = get(self.cache, qclass, type, qname) or set(self.cache, qclass, type, qname, setmetatable({}, rrs_metatable)); - if not rrs[rr[qtype:lower()]] then + if rr[qtype:lower()] and not rrs[rr[qtype:lower()]] then rrs[rr[qtype:lower()]] = true; append(rrs, rr); end @@ -903,7 +904,11 @@ --self.print(response); for _, rr in pairs(response.answer) do - self:remember(rr, response.question[1].type); + self:remember(rr, rr.type); + end + + for _, rr in pairs(response.additional) do + self:remember(rr, rr.type); end -- retire the query