Changeset

10618:232841373711 0.11

mod_admin_telnet: Create a DNS resolver per console session (fixes #1492) This is now the common pattern, eg see mod_s2s.
author Kim Alvefur <zash@zash.se>
date Fri, 24 Jan 2020 23:27:49 +0100
parents 10616:37936c72846d
children 10619:ef620906ab82 10646:85585910d468
files plugins/mod_admin_telnet.lua
diffstat 1 files changed, 19 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_admin_telnet.lua	Fri Jan 24 16:21:30 2020 +0000
+++ b/plugins/mod_admin_telnet.lua	Fri Jan 24 23:27:49 2020 +0100
@@ -1074,36 +1074,49 @@
 
 def_env.dns = {};
 local adns = require"net.adns";
-local dns = require"net.dns";
+
+local function get_resolver(session)
+	local resolver = session.dns_resolver;
+	if not resolver then
+		resolver = adns.resolver();
+		session.dns_resolver = resolver;
+	end
+	return resolver;
+end
 
 function def_env.dns:lookup(name, typ, class)
+	local resolver = get_resolver(self.session);
 	local ret = "Query sent";
 	local print = self.session.print;
 	local function handler(...)
 		ret = "Got response";
 		print(...);
 	end
-	adns.lookup(handler, name, typ, class);
+	resolver:lookup(handler, name, typ, class);
 	return true, ret;
 end
 
 function def_env.dns:addnameserver(...)
-	dns._resolver:addnameserver(...)
+	local resolver = get_resolver(self.session);
+	resolver._resolver:addnameserver(...)
 	return true
 end
 
 function def_env.dns:setnameserver(...)
-	dns._resolver:setnameserver(...)
+	local resolver = get_resolver(self.session);
+	resolver._resolver:setnameserver(...)
 	return true
 end
 
 function def_env.dns:purge()
-	dns.purge()
+	local resolver = get_resolver(self.session);
+	resolver._resolver:purge()
 	return true
 end
 
 function def_env.dns:cache()
-	return true, "Cache:\n"..tostring(dns.cache())
+	local resolver = get_resolver(self.session);
+	return true, "Cache:\n"..tostring(resolver._resolver.cache)
 end
 
 def_env.http = {};