From: Robin Geuze Date: Tue, 14 Mar 2017 20:53:05 +0000 (+0100) Subject: Make includeDirectory work sorted X-Git-Tag: rec-4.1.0-alpha1~210^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=00bf2fb912816399a3ca92c1a8d94fd241dfab36;p=pdns Make includeDirectory work sorted --- diff --git a/pdns/dnsdist-lua2.cc b/pdns/dnsdist-lua2.cc index abf3deec5..0c3ebc919 100644 --- a/pdns/dnsdist-lua2.cc +++ b/pdns/dnsdist-lua2.cc @@ -1168,6 +1168,7 @@ void moreLua(bool client) DIR *dirp; struct dirent *ent; + std::list files; if (!(dirp = opendir(dirname.c_str()))) { errlog("Error opening the included directory %s!", dirname.c_str()); g_outputBuffer="Error opening the included directory " + dirname + "!"; @@ -1187,17 +1188,23 @@ void moreLua(bool client) continue; } - std::ifstream ifs(namebuf.str()); - if (!ifs) { - warnlog("Unable to read configuration from '%s'", namebuf.str()); - } else { - vinfolog("Read configuration from '%s'", namebuf.str()); - } - - g_lua.executeCode(ifs); + files.push_back(namebuf.str()); } } + closedir(dirp); + files.sort(); + + for (auto file = files.begin(); file != files.end(); ++file) { + std::ifstream ifs(*file); + if (!ifs) { + warnlog("Unable to read configuration from '%s'", *file); + } else { + vinfolog("Read configuration from '%s'", *file); + } + + g_lua.executeCode(ifs); + } g_included = false; }); diff --git a/regression-tests.dnsdist/test-include-dir/Test.conf b/regression-tests.dnsdist/test-include-dir/Test.conf new file mode 100644 index 000000000..b0926f676 --- /dev/null +++ b/regression-tests.dnsdist/test-include-dir/Test.conf @@ -0,0 +1 @@ +addAction(makeRule("includedir.advanced.tests.powerdns.com."), AllowAction()) diff --git a/regression-tests.dnsdist/test-include-dir/test.conf b/regression-tests.dnsdist/test-include-dir/test.conf index b0926f676..0b358ca7e 100644 --- a/regression-tests.dnsdist/test-include-dir/test.conf +++ b/regression-tests.dnsdist/test-include-dir/test.conf @@ -1 +1 @@ -addAction(makeRule("includedir.advanced.tests.powerdns.com."), AllowAction()) +addAction(AllRule(), RCodeAction(dnsdist.REFUSED)) diff --git a/regression-tests.dnsdist/test_Advanced.py b/regression-tests.dnsdist/test_Advanced.py index a32e96df6..952301ec6 100644 --- a/regression-tests.dnsdist/test_Advanced.py +++ b/regression-tests.dnsdist/test_Advanced.py @@ -1144,7 +1144,6 @@ class TestAdvancedIncludeDir(DNSDistTest): _config_template = """ -- this directory contains a file allowing includedir.advanced.tests.powerdns.com. includeDirectory('test-include-dir') - addAction(AllRule(), RCodeAction(dnsdist.REFUSED)) newServer{address="127.0.0.1:%s"} """