From 28e486f3df0f239d65a6ae771b43c92869a8f275 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sun, 10 Jun 2018 17:37:06 +0200 Subject: Backed out changeset eae606b9266c: Used a lot of memory --- net/dns.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/net/dns.lua b/net/dns.lua index 0d2cce01..8a7d4e7a 100644 --- a/net/dns.lua +++ b/net/dns.lua @@ -86,10 +86,9 @@ local function highbyte(i) -- - - - - - - - - - - - - - - - - - - highbyte end -local function augment (t, prefix) -- - - - - - - - - - - - - - - - - augment +local function augment (t) -- - - - - - - - - - - - - - - - - - - - augment local a = {}; - for i = 1, 0xffff do - local s = t[i] or ("%s%d"):format(prefix, i); + for i,s in pairs(t) do a[i] = s; a[s] = s; a[string.lower(s)] = s; @@ -120,8 +119,8 @@ dns.types = { dns.classes = { 'IN', 'CS', 'CH', 'HS', [255] = '*' }; -dns.type = augment (dns.types, "TYPE"); -dns.class = augment (dns.classes, "CLASS"); +dns.type = augment (dns.types); +dns.class = augment (dns.classes); dns.typecode = encode (dns.types); dns.classcode = encode (dns.classes); -- cgit v1.2.3 From 054cdafd57234e9b22cf6178552df1d1929b86ad Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sun, 10 Jun 2018 17:45:49 +0200 Subject: net.dns: Lazily generate unknown RR type names --- net/dns.lua | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/net/dns.lua b/net/dns.lua index 8a7d4e7a..563c81a6 100644 --- a/net/dns.lua +++ b/net/dns.lua @@ -86,13 +86,22 @@ 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 a[i] = s; a[s] = s; a[string.lower(s)] = s; end + setmetatable(a, { + __index = function (_, i) + if type(i) == "number" then + return ("%s%d"):format(prefix, i); + elseif type(i) == "string" then + return i:upper(); + end + end; + }) return a; end @@ -119,8 +128,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); -- cgit v1.2.3