diff options
author | Kim Alvefur <zash@zash.se> | 2018-06-09 15:34:00 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2018-06-09 15:34:00 +0200 |
commit | 28aad3d6909fb864af2b2ea1bd2fcb541aeff17a (patch) | |
tree | 79008f7714ac6ce48c09ea79ed0de668d61f61fb /net | |
parent | 80e86b6726e31edd657a8c38cd9065640407dcf3 (diff) | |
download | prosody-28aad3d6909fb864af2b2ea1bd2fcb541aeff17a.tar.gz prosody-28aad3d6909fb864af2b2ea1bd2fcb541aeff17a.zip |
net.dns: Syntesize type names for the full range
Otherwise unknown records are identified as A records. This also fixes
various tracebacks unearthed by previous commits and mis-identified
records.
Related to #1056 #976 #819
Diffstat (limited to 'net')
-rw-r--r-- | net/dns.lua | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/dns.lua b/net/dns.lua index 8a7d4e7a..0d2cce01 100644 --- a/net/dns.lua +++ b/net/dns.lua @@ -86,9 +86,10 @@ local function highbyte(i) -- - - - - - - - - - - - - - - - - - - highbyte 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; @@ -119,8 +120,8 @@ dns.types = { 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); |