net.unbound: Merge luaunbound and prosody defaults in absence of user config (fixes #1763) (thanks rgd) 0.12
authorKim Alvefur <zash@zash.se>
Sun, 19 Jun 2022 19:49:32 +0200
branch0.12
changeset 12561 ee5b061588ea
parent 12557 cc0ec0277813
child 12562 0f71106448af
child 12583 ca6a43fe0231
net.unbound: Merge luaunbound and prosody defaults in absence of user config (fixes #1763) (thanks rgd) add_defaults() is supposed to merge 3 tables, the defaults in luaunbound, the defaults from prosody and any config from the prosody config file. In the case where no `unbound={}` has been in the config, it skips over the merge and returns only the prosody built-in defaults. This results in libunbound skipping reading resolv.conf and uses its default behavior of full recursive resolution. Prior to #1737 there were only two tables, the luaunbound defaults and the prosody config, where bypassing the merge and returning the former did the right thing.
net/unbound.lua
--- a/net/unbound.lua	Tue Jun 14 16:28:49 2022 +0200
+++ b/net/unbound.lua	Sun Jun 19 19:49:32 2022 +0200
@@ -28,19 +28,16 @@
 local builtin_defaults = { hoststxt = false }
 
 local function add_defaults(conf)
-	if conf then
-		for option, default in pairs(builtin_defaults) do
-			if conf[option] == nil then
-				conf[option] = default;
-			end
+	conf = conf or {};
+	for option, default in pairs(builtin_defaults) do
+		if conf[option] == nil then
+			conf[option] = default;
 		end
-		for option, default in pairs(libunbound.config) do
-			if conf[option] == nil then
-				conf[option] = default;
-			end
+	end
+	for option, default in pairs(libunbound.config) do
+		if conf[option] == nil then
+			conf[option] = default;
 		end
-	else
-		return builtin_defaults;
 	end
 	return conf;
 end