]> git.ipfire.org Git - thirdparty/pdns.git/log
thirdparty/pdns.git
9 days agodnsdist: Use different ports for custom OT responders 17469/head
Remi Gacogne [Thu, 28 May 2026 08:31:54 +0000 (10:31 +0200)] 
dnsdist: Use different ports for custom OT responders

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
11 days agodnsdist: Consistently handle slow protobuf messages in our tests
Remi Gacogne [Tue, 26 May 2026 14:19:57 +0000 (16:19 +0200)] 
dnsdist: Consistently handle slow protobuf messages in our tests

It was not an issue before, but GH actions runners are so bad these
days that we are now encountering these errors quite often.
In any case we should have been more consistent to begin with.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoMerge pull request #17453 from rgacogne/changelog-from-pr-improvements
Remi Gacogne [Fri, 22 May 2026 12:25:57 +0000 (14:25 +0200)] 
Merge pull request #17453 from rgacogne/changelog-from-pr-improvements

changelog-from-pr: Reuse HTTP connections, fix PR/issue confusion for tickets

2 weeks agoMerge pull request #17458 from Habbie/faketime-pin
Remi Gacogne [Fri, 22 May 2026 12:25:46 +0000 (14:25 +0200)] 
Merge pull request #17458 from Habbie/faketime-pin

tasks.py faketime build: pin git commit

2 weeks agoMerge pull request #17457 from rgacogne/ddist-flaky-ebpf-test
Remi Gacogne [Fri, 22 May 2026 12:25:02 +0000 (14:25 +0200)] 
Merge pull request #17457 from rgacogne/ddist-flaky-ebpf-test

dnsdist: Do not check the counters in eBPF's regression test

2 weeks agoMerge pull request #17459 from miodvallat/1001nights
Remi Gacogne [Fri, 22 May 2026 07:10:22 +0000 (09:10 +0200)] 
Merge pull request #17459 from miodvallat/1001nights

auth: stricter proxy protocol size limit enforcement

2 weeks agoEnforce proxy protocol size limit earlier. 17459/head
Miod Vallat [Thu, 21 May 2026 14:33:39 +0000 (16:33 +0200)] 
Enforce proxy protocol size limit earlier.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoMerge pull request #17456 from rgacogne/ddist-backend-latency-tsan
Remi Gacogne [Thu, 21 May 2026 14:36:32 +0000 (16:36 +0200)] 
Merge pull request #17456 from rgacogne/ddist-backend-latency-tsan

dnsdist: Add a TSAN suppression for DownstreamState::setUpStatus

2 weeks agoMerge pull request #17367 from miodvallat/xfrdam
Miod Vallat [Thu, 21 May 2026 14:00:32 +0000 (16:00 +0200)] 
Merge pull request #17367 from miodvallat/xfrdam

Correctly display APL DNS records with IPv4 addresses ending in .0

2 weeks agoMerge pull request #17373 from miodvallat/hemicolon
Miod Vallat [Thu, 21 May 2026 13:59:33 +0000 (15:59 +0200)] 
Merge pull request #17373 from miodvallat/hemicolon

auth: once again, relax JSON normalization code for record contents

2 weeks agoMerge pull request #17447 from miodvallat/lmdbound
Miod Vallat [Thu, 21 May 2026 13:59:00 +0000 (15:59 +0200)] 
Merge pull request #17447 from miodvallat/lmdbound

auth lmdb: do not serialize records over 64K in length

2 weeks agoMerge pull request #17455 from miodvallat/blob_me_like_a_hurricane
Miod Vallat [Thu, 21 May 2026 13:57:45 +0000 (15:57 +0200)] 
Merge pull request #17455 from miodvallat/blob_me_like_a_hurricane

Yet more xfr* hardening

2 weeks agotasks.py faketime build: pin git commit 17458/head
Peter van Dijk [Thu, 21 May 2026 13:45:45 +0000 (15:45 +0200)] 
tasks.py faketime build: pin git commit

Signed-off-by: Peter van Dijk <peter.van.dijk@powerdns.com>
2 weeks agodnsdist: Do not check the counters in eBPF's regression test 17457/head
Remi Gacogne [Thu, 21 May 2026 13:42:14 +0000 (15:42 +0200)] 
dnsdist: Do not check the counters in eBPF's regression test

We might have already been blocked by the dynamic block regression
tests, if we are unlucky.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Add a TSAN suppression for DownstreamState::setUpStatus 17456/head
Remi Gacogne [Thu, 21 May 2026 13:31:10 +0000 (15:31 +0200)] 
dnsdist: Add a TSAN suppression for DownstreamState::setUpStatus

Prevents:
```
WARNING: ThreadSanitizer: data race (pid=11817)
  Write of size 8 at 0x728400000f58 by thread T25:
    #0 __tsan_memset <null> (dnsdist+0x503c41) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #1 DownstreamState::setUpStatus(bool) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist.hh:824:22 (dnsdist+0x657aba) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #2 DownstreamState::submitHealthCheckResult(bool, bool) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist-backend.cc:914:5 (dnsdist+0x657aba)
    #3 healthCheckUDPCallback(int, boost::any&) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist-healthchecks.cc:285:19 (dnsdist+0x82b696) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #4 void std::__invoke_impl<void, void (*&)(int, boost::any&), int, boost::any&>(std::__invoke_other, void (*&)(int, boost::any&), int&&, boost::any&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14 (dnsdist+0x839ce7) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #5 std::enable_if<is_invocable_r_v<void, void (*&)(int, boost::any&), int, boost::any&>, void>::type std::__invoke_r<void, void (*&)(int, boost::any&), int, boost::any&>(void (*&)(int, boost::any&), int&&, boost::any&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:111:2 (dnsdist+0x839ce7)
    #6 std::_Function_handler<void (int, boost::any&), void (*)(int, boost::any&)>::_M_invoke(std::_Any_data const&, int&&, boost::any&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:290:9 (dnsdist+0x839ce7)
    #7 std::function<void (int, boost::any&)>::operator()(int, boost::any&) const /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:591:9 (dnsdist+0x62b2e1) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #8 EpollFDMultiplexer::run(timeval*, int) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/epollmplexer.cc:188:9 (dnsdist+0x62b2e1)
    #9 handleQueuedHealthChecks(FDMultiplexer&, bool) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist-healthchecks.cc:560:23 (dnsdist+0x82d873) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #10 healthChecksThread() /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist.cc:2627:9 (dnsdist+0x5ace08) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #11 void std::__invoke_impl<void, void (*)()>(std::__invoke_other, void (*&&)()) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14 (dnsdist+0x5f839d) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #12 std::__invoke_result<void (*)()>::type std::__invoke<void (*)()>(void (*&&)()) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:96:14 (dnsdist+0x5f839d)
    #13 void std::thread::_Invoker<std::tuple<void (*)()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:301:13 (dnsdist+0x5f839d)
    #14 std::thread::_Invoker<std::tuple<void (*)()>>::operator()() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:308:11 (dnsdist+0x5f839d)
    #15 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)()>>>::_M_run() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:253:13 (dnsdist+0x5f839d)
    #16 <null> <null> (libstdc++.so.6+0xe1223) (BuildId: 133b71e0013695cc7832680a74edb51008c4fc4c)
2026-05-21T12:42:22.4242125Z
  Previous write of size 8 at 0x728400000f58 by thread T15:
    #0 processResponderPacket(std::shared_ptr<DownstreamState>&, std::vector<unsigned char, noinit_adaptor<std::allocator<unsigned char>>>&, InternalQueryState&&) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist.cc:767:20 (dnsdist+0x59159e) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #1 responderThread(std::shared_ptr<DownstreamState>) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist.cc:849:15 (dnsdist+0x5930f8) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #2 void std::__invoke_impl<void, void (*)(std::shared_ptr<DownstreamState>), std::shared_ptr<DownstreamState>>(std::__invoke_other, void (*&&)(std::shared_ptr<DownstreamState>), std::shared_ptr<DownstreamState>&&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14 (dnsdist+0x66ba55) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #3 std::__invoke_result<void (*)(std::shared_ptr<DownstreamState>), std::shared_ptr<DownstreamState>>::type std::__invoke<void (*)(std::shared_ptr<DownstreamState>), std::shared_ptr<DownstreamState>>(void (*&&)(std::shared_ptr<DownstreamState>), std::shared_ptr<DownstreamState>&&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:96:14 (dnsdist+0x66ba55)
    #4 void std::thread::_Invoker<std::tuple<void (*)(std::shared_ptr<DownstreamState>), std::shared_ptr<DownstreamState>>>::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:301:13 (dnsdist+0x66ba55)
    #5 std::thread::_Invoker<std::tuple<void (*)(std::shared_ptr<DownstreamState>), std::shared_ptr<DownstreamState>>>::operator()() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:308:11 (dnsdist+0x66ba55)
    #6 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(std::shared_ptr<DownstreamState>), std::shared_ptr<DownstreamState>>>>::_M_run() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:253:13 (dnsdist+0x66ba55)
    #7 <null> <null> (libstdc++.so.6+0xe1223) (BuildId: 133b71e0013695cc7832680a74edb51008c4fc4c)
2026-05-21T12:42:22.4257091Z
  As if synchronized via sleep:
    #0 usleep <null> (dnsdist+0x504f82) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #1 healthChecksThread() /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist.cc:2595:9 (dnsdist+0x5ac98f) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #2 void std::__invoke_impl<void, void (*)()>(std::__invoke_other, void (*&&)()) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14 (dnsdist+0x5f839d) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #3 std::__invoke_result<void (*)()>::type std::__invoke<void (*)()>(void (*&&)()) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:96:14 (dnsdist+0x5f839d)
    #4 void std::thread::_Invoker<std::tuple<void (*)()>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:301:13 (dnsdist+0x5f839d)
    #5 std::thread::_Invoker<std::tuple<void (*)()>>::operator()() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:308:11 (dnsdist+0x5f839d)
    #6 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)()>>>::_M_run() /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/std_thread.h:253:13 (dnsdist+0x5f839d)
    #7 <null> <null> (libstdc++.so.6+0xe1223) (BuildId: 133b71e0013695cc7832680a74edb51008c4fc4c)
2026-05-21T12:42:22.4265086Z
  Location is heap block of size 4160 at 0x728400000000 allocated by main thread:
    #0 operator new(unsigned long, std::align_val_t) <null> (dnsdist+0x58cb9a) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #1 std::__new_allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>>::allocate(unsigned long, void const*) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/new_allocator.h:147:31 (dnsdist+0x6ff574) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>>>::allocate(std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>>&, unsigned long) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/alloc_traits.h:515:20 (dnsdist+0x6ff574)
    #3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>>> std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>>>(std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>>&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/allocated_ptr.h:98:21 (dnsdist+0x6ff574)
    #4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<DownstreamState, std::allocator<void>, DownstreamState::Config, std::shared_ptr<TLSCtx>, bool>(DownstreamState*&, std::_Sp_alloc_shared_tag<std::allocator<void>>, DownstreamState::Config&&, std::shared_ptr<TLSCtx>&&, bool&&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/shared_ptr_base.h:967:19 (dnsdist+0x6ff574)
    #5 std::__shared_ptr<DownstreamState, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, DownstreamState::Config, std::shared_ptr<TLSCtx>, bool>(std::_Sp_alloc_shared_tag<std::allocator<void>>, DownstreamState::Config&&, std::shared_ptr<TLSCtx>&&, bool&&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/shared_ptr_base.h:1713:14 (dnsdist+0x6ff574)
    #6 std::shared_ptr<DownstreamState>::shared_ptr<std::allocator<void>, DownstreamState::Config, std::shared_ptr<TLSCtx>, bool>(std::_Sp_alloc_shared_tag<std::allocator<void>>, DownstreamState::Config&&, std::shared_ptr<TLSCtx>&&, bool&&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/shared_ptr.h:463:4 (dnsdist+0xac6d46) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #7 std::shared_ptr<std::enable_if<!is_array<DownstreamState>::value, DownstreamState>::type> std::make_shared<DownstreamState, DownstreamState::Config, std::shared_ptr<TLSCtx>, bool>(DownstreamState::Config&&, std::shared_ptr<TLSCtx>&&, bool&&) /usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/shared_ptr.h:1007:14 (dnsdist+0xac6d46)
    #8 setupLuaConfig(LuaContext&, bool, bool)::$_36::operator()(boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>>, std::optional<int>) const /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist-lua.cc:644:37 (dnsdist+0xac6d46)
    #9 decltype((*this).function((*this).param, std::forward<std::optional<int> const&>(fp))) LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_36&, boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>> const&>::operator()<std::optional<int> const&>(std::optional<int> const&) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:1889:20 (dnsdist+0xac0fd8) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #10 decltype((*this).function((*this).param)) LuaContext::Binder<LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_36&, boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>> const&>&, std::optional<int> const&>::operator()<>() /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:1889:20 (dnsdist+0xac0fd8)
    #11 std::shared_ptr<DownstreamState> LuaContext::readIntoFunction<std::shared_ptr<DownstreamState>, LuaContext::Binder<LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_36&, boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>> const&>&, std::optional<int> const&>&>(lua_State*, LuaContext::tag<std::shared_ptr<DownstreamState>>, LuaContext::Binder<LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_36&, boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>> const&>&, std::optional<int> const&>&, int) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:1808:16 (dnsdist+0xac0fd8)
    #12 std::enable_if<IsOptional<std::optional<int>>::value, std::shared_ptr<DownstreamState>>::type LuaContext::readIntoFunction<std::shared_ptr<DownstreamState>, LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_36&, boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>> const&>&, std::optional<int>>(lua_State*, LuaContext::tag<std::shared_ptr<DownstreamState>>, LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_36&, boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>> const&>&, int, LuaContext::tag<std::optional<int>>) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:1817:20 (dnsdist+0xac0fd8)
    #13 std::enable_if<!IsOptional<boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>>>::value, std::shared_ptr<DownstreamState>>::type LuaContext::readIntoFunction<std::shared_ptr<DownstreamState>, setupLuaConfig(LuaContext&, bool, bool)::$_36&, boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>>, std::optional<int>>(lua_State*, LuaContext::tag<std::shared_ptr<DownstreamState>>, setupLuaConfig(LuaContext&, bool, bool)::$_36&, int, LuaContext::tag<boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>>>, LuaContext::tag<std::optional<int>>) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:1839:16 (dnsdist+0xac0fd8)
    #14 std::enable_if<!std::integral_constant<bool, false>::value && !std::is_void<setupLuaConfig(LuaContext&, bool, bool)::$_36&>::value, LuaContext::PushedObject>::type LuaContext::Pusher<std::shared_ptr<DownstreamState> (boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>>, std::optional<int>), void>::callback2<setupLuaConfig(LuaContext&, bool, bool)::$_36&>(lua_State*, setupLuaConfig(LuaContext&, bool, bool)::$_36&, int) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:2478:31 (dnsdist+0xac0fd8)
    #15 LuaContext::PushedObject LuaContext::Pusher<std::shared_ptr<DownstreamState> (boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>>, std::optional<int>), void>::callback<setupLuaConfig(LuaContext&, bool, bool)::$_36>(lua_State*, setupLuaConfig(LuaContext&, bool, bool)::$_36*, int) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:2447:20 (dnsdist+0xac0fd8)
    #16 std::enable_if<boost::has_trivial_destructor<setupLuaConfig(LuaContext&, bool, bool)::$_36>::value, LuaContext::PushedObject>::type LuaContext::Pusher<std::shared_ptr<DownstreamState> (boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>>, std::optional<int>), void>::push<setupLuaConfig(LuaContext&, bool, bool)::$_36>(lua_State*, setupLuaConfig(LuaContext&, bool, bool)::$_36)::'lambda'(lua_State*)::operator()(lua_State*) const /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:2375:20 (dnsdist+0xac0fd8)
    #17 std::enable_if<boost::has_trivial_destructor<setupLuaConfig(LuaContext&, bool, bool)::$_36>::value, LuaContext::PushedObject>::type LuaContext::Pusher<std::shared_ptr<DownstreamState> (boost::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, boost::variant<bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, std::vector<std::pair<int, std::shared_ptr<XskSocket>>, std::allocator<std::pair<int, std::shared_ptr<XskSocket>>>>, std::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)>>>>>>, std::optional<int>), void>::push<setupLuaConfig(LuaContext&, bool, bool)::$_36>(lua_State*, setupLuaConfig(LuaContext&, bool, bool)::$_36)::'lambda'(lua_State*)::__invoke(lua_State*) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:2371:31 (dnsdist+0xac0fd8)
    #18 <null> <null> (libluajit-5.1.so.2+0xaaf5) (BuildId: e1deeeb04de4ac076ef5cc53b583f2c4db375dbe)
    #19 std::tuple<> LuaContext::call<std::tuple<>>(lua_State*, LuaContext::PushedObject) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:1441:29 (dnsdist+0x61f3bd) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #20 LuaContext::executeCode(std::istream&) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/ext/luawrapper/include/LuaContext.hpp:295:9 (dnsdist+0xb61a34) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #21 dnsdist::configuration::lua::loadLuaConfigurationFile(LuaContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist-lua.cc:3363:10 (dnsdist+0xac0d1c) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #22 loadConfigurationFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool, std::shared_ptr<Logr::Logger const> const&) /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist.cc:3593:5 (dnsdist+0x5ab330) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #23 main /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist.cc:3722:10 (dnsdist+0x5a2399) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
2026-05-21T12:42:22.4779568Z
  Thread T25 'dnsdist/healthC' (tid=11843, running) created by main thread at:
    #0 pthread_create <null> (dnsdist+0x507f55) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State>>, void (*)()) <null> (libstdc++.so.6+0xe12f8) (BuildId: 133b71e0013695cc7832680a74edb51008c4fc4c)
    #2 <null> <null> (libc.so.6+0x29ca7) (BuildId: c495b62edadd6c356265942ec1282d98058a7b41)
2026-05-21T12:42:22.4782711Z
  Thread T15 'dnsdist/respond' (tid=11833, running) created by main thread at:
    #0 pthread_create <null> (dnsdist+0x507f55) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State>>, void (*)()) <null> (libstdc++.so.6+0xe12f8) (BuildId: 133b71e0013695cc7832680a74edb51008c4fc4c)
    #2 main /__w/pdns-private/pdns-private/pdns/dnsdistdist/dnsdist-0.0.0-git1/../../../../../../tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-0.0.0-git1/dnsdist.cc:3862:18 (dnsdist+0x5a6880) (BuildId: 22ed65c8a459bfe2a40f94878815ce579cb879a9)
```

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoPerform length check in RecordTextReader::xfrBlob(). 17455/head
Miod Vallat [Thu, 21 May 2026 13:08:49 +0000 (15:08 +0200)] 
Perform length check in RecordTextReader::xfrBlob().

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoDo not read beyond record in the 2-args xfrBlob.
Miod Vallat [Thu, 21 May 2026 13:08:34 +0000 (15:08 +0200)] 
Do not read beyond record in the 2-args xfrBlob.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agochangelog-from-pr: Fix Python formatting 17453/head
Remi Gacogne [Thu, 21 May 2026 11:37:50 +0000 (13:37 +0200)] 
changelog-from-pr: Fix Python formatting

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoMerge pull request #17452 from rgacogne/ddist-2.0.6-changelog-secpoll
Remi Gacogne [Thu, 21 May 2026 11:34:24 +0000 (13:34 +0200)] 
Merge pull request #17452 from rgacogne/ddist-2.0.6-changelog-secpoll

dnsdist: Update ChangeLog and security polling zone for 2.0.6

2 weeks agochangelog-from-pr: Do not confuse PR numbers with issues
Remi Gacogne [Thu, 21 May 2026 09:49:41 +0000 (11:49 +0200)] 
changelog-from-pr: Do not confuse PR numbers with issues

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agochangelog-from-pr: Reuse HTTP connections whenever possible
Remi Gacogne [Thu, 21 May 2026 09:49:19 +0000 (11:49 +0200)] 
changelog-from-pr: Reuse HTTP connections whenever possible

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Update ChangeLog and security polling zone for 2.0.6 17452/head
Remi Gacogne [Thu, 21 May 2026 08:50:01 +0000 (10:50 +0200)] 
dnsdist: Update ChangeLog and security polling zone for 2.0.6

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoclang-tidy is why we can't have nice things. 17373/head
Miod Vallat [Fri, 15 May 2026 13:01:41 +0000 (15:01 +0200)] 
clang-tidy is why we can't have nice things.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoUse parseRFC1035CharStringRelaxed to normalize json record contents.
Miod Vallat [Fri, 15 May 2026 12:06:16 +0000 (14:06 +0200)] 
Use parseRFC1035CharStringRelaxed to normalize json record contents.

Fixes #17368

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoAdd a variant of parseRFC1035CharString, suitable for TXT record contents.
Miod Vallat [Fri, 15 May 2026 12:03:05 +0000 (14:03 +0200)] 
Add a variant of parseRFC1035CharString, suitable for TXT record contents.

parseRFC1035CharString will always reject ( ) and ;, the latter which is
quite often used. The new parseRFC1035CharStringRelaxed automaton behaves
similarly to parseRFC1035CharString, but allows these three characters when
they appear within quoted sections.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoMerge pull request #17371 from rgacogne/error-when-clang-tidy-fails
Remi Gacogne [Wed, 20 May 2026 18:48:04 +0000 (20:48 +0200)] 
Merge pull request #17371 from rgacogne/error-when-clang-tidy-fails

ci: Error when clang tidy fails

2 weeks agoMerge pull request #17385 from rgacogne/ddist-keep-live-concurrent-connections
Remi Gacogne [Wed, 20 May 2026 18:47:17 +0000 (20:47 +0200)] 
Merge pull request #17385 from rgacogne/ddist-keep-live-concurrent-connections

dnsdist: Keep concurrent connection entries for live connections

2 weeks agoMerge pull request #17445 from miodvallat/doc_sa_2026_06
Miod Vallat [Wed, 20 May 2026 12:54:06 +0000 (14:54 +0200)] 
Merge pull request #17445 from miodvallat/doc_sa_2026_06

auth: 5.0.15 & 4.9.5 documentation updates

2 weeks agodocumentation and secpoll update for auth 4.9.15 and 5.0.5 17445/head
Miod Vallat [Wed, 20 May 2026 08:15:30 +0000 (10:15 +0200)] 
documentation and secpoll update for auth 4.9.15 and 5.0.5

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoMerge pull request #17442 from miodvallat/sa_2026_06
Miod Vallat [Wed, 20 May 2026 11:43:05 +0000 (13:43 +0200)] 
Merge pull request #17442 from miodvallat/sa_2026_06

auth: fixes for SA 2026-06

2 weeks agoBe sure to escape user data when building a TXT record. 17442/head
Miod Vallat [Wed, 20 May 2026 07:31:40 +0000 (09:31 +0200)] 
Be sure to escape user data when building a TXT record.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoSimplify PTR record creation. NFCI
Miod Vallat [Wed, 20 May 2026 07:31:31 +0000 (09:31 +0200)] 
Simplify PTR record creation. NFCI

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoCrude test for proxy + views
Miod Vallat [Wed, 20 May 2026 07:30:51 +0000 (09:30 +0200)] 
Crude test for proxy + views

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoUse the inner remote to perform view selection.
Miod Vallat [Wed, 20 May 2026 07:30:39 +0000 (09:30 +0200)] 
Use the inner remote to perform view selection.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoUse getInnerRemote() instead of inlining it. NFC
Miod Vallat [Wed, 20 May 2026 07:30:23 +0000 (09:30 +0200)] 
Use getInnerRemote() instead of inlining it. NFC

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoEscape bind-special characters in rrnames when writing bind zones.
Miod Vallat [Wed, 20 May 2026 07:29:52 +0000 (09:29 +0200)] 
Escape bind-special characters in rrnames when writing bind zones.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoCope with exceptions thrown by MOADNSParser initialization.
Miod Vallat [Wed, 20 May 2026 07:28:22 +0000 (09:28 +0200)] 
Cope with exceptions thrown by MOADNSParser initialization.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoAdd a configurable limit to the number of active GSS contexts.
Miod Vallat [Wed, 20 May 2026 07:27:35 +0000 (09:27 +0200)] 
Add a configurable limit to the number of active GSS contexts.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoFactor code responsible for GssSecContext acquisition.
Miod Vallat [Wed, 20 May 2026 07:27:03 +0000 (09:27 +0200)] 
Factor code responsible for GssSecContext acquisition.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoLock around GssSecContext operation.
Miod Vallat [Wed, 20 May 2026 07:26:52 +0000 (09:26 +0200)] 
Lock around GssSecContext operation.

Two distributor threads may create GssContext with the same DNSName label,
and thus end up sharing the same GssSecContext internally.

Wrapping GssSecContext in LockGuarded makes sure that no concurrent
operation can occur.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoRemove redundant GssContext object creation.
Miod Vallat [Wed, 20 May 2026 07:26:34 +0000 (09:26 +0200)] 
Remove redundant GssContext object creation.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agoMake s_last_expired atomic; multiple threads may access it.
Miod Vallat [Wed, 20 May 2026 07:26:22 +0000 (09:26 +0200)] 
Make s_last_expired atomic; multiple threads may access it.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agodnsdist: Check that marking a TCP conn as closed does not remove it from the map 17385/head
Remi Gacogne [Tue, 19 May 2026 13:20:00 +0000 (15:20 +0200)] 
dnsdist: Check that marking a TCP conn as closed does not remove it from the map

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoMerge pull request #17376 from rgacogne/credentials-zero-out
Remi Gacogne [Tue, 19 May 2026 12:01:22 +0000 (14:01 +0200)] 
Merge pull request #17376 from rgacogne/credentials-zero-out

credentials: Try harder to zero out existing data

2 weeks agoMerge pull request #17162 from rgacogne/ddist-harden-ffi-interface
Remi Gacogne [Tue, 19 May 2026 12:01:10 +0000 (14:01 +0200)] 
Merge pull request #17162 from rgacogne/ddist-harden-ffi-interface

dnsdist: Harden the Lua FFI interface against misuse

2 weeks agoMerge pull request #17393 from rgacogne/ddist-check-backend-weight-yaml
Remi Gacogne [Tue, 19 May 2026 10:44:15 +0000 (12:44 +0200)] 
Merge pull request #17393 from rgacogne/ddist-check-backend-weight-yaml

dnsdist: Ignore valid backend weight coming from YAML

2 weeks agoMerge pull request #17401 from rgacogne/ddist-quiche-0.29.0
Remi Gacogne [Tue, 19 May 2026 08:34:29 +0000 (10:34 +0200)] 
Merge pull request #17401 from rgacogne/ddist-quiche-0.29.0

dnsdist: Update Quiche to 0.29.0 in our packages

2 weeks agocredentials: Document that we trying to get the linters to shut the hell up 17376/head
Remi Gacogne [Tue, 19 May 2026 08:29:49 +0000 (10:29 +0200)] 
credentials: Document that we trying to get the linters to shut the hell up

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Stop trying to be clever; just tell clang-tidy to shut up 17162/head
Remi Gacogne [Tue, 19 May 2026 08:26:29 +0000 (10:26 +0200)] 
dnsdist: Stop trying to be clever; just tell clang-tidy to shut up

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Apply Miod's suggestion 17393/head
Remi Gacogne [Tue, 19 May 2026 07:45:06 +0000 (09:45 +0200)] 
dnsdist: Apply Miod's suggestion

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agocredentials: Clear the moved-from string before checking its capacity
Remi Gacogne [Tue, 19 May 2026 07:42:20 +0000 (09:42 +0200)] 
credentials: Clear the moved-from string before checking its capacity

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoMerge pull request #17392 from rgacogne/ddist-exceptions
Remi Gacogne [Mon, 18 May 2026 19:27:08 +0000 (21:27 +0200)] 
Merge pull request #17392 from rgacogne/ddist-exceptions

dnsdist: Better handling of exceptions

2 weeks agoMerge pull request #17375 from rgacogne/ddist-fix-outgoing-tls-session-cache
Remi Gacogne [Mon, 18 May 2026 15:22:55 +0000 (17:22 +0200)] 
Merge pull request #17375 from rgacogne/ddist-fix-outgoing-tls-session-cache

dnsdist: Fix outgoing TLS session cache cleanup

2 weeks agoMerge pull request #17390 from rgacogne/ddist-bpf-fixes
Remi Gacogne [Mon, 18 May 2026 15:22:38 +0000 (17:22 +0200)] 
Merge pull request #17390 from rgacogne/ddist-bpf-fixes

dnsdist: Fixes several eBPF issues

2 weeks agoMerge pull request #17400 from rgacogne/ddist-healtcheck-test-failure
Remi Gacogne [Mon, 18 May 2026 15:21:40 +0000 (17:21 +0200)] 
Merge pull request #17400 from rgacogne/ddist-healtcheck-test-failure

dnsdist: Hopefully fixes spurious failures of TestHealthCheckLatency

2 weeks agoMerge pull request #17365 from miodvallat/luautil
Miod Vallat [Mon, 18 May 2026 15:05:04 +0000 (17:05 +0200)] 
Merge pull request #17365 from miodvallat/luautil

auth: let pdnsutil work with lua backend

2 weeks agoMerge pull request #17131 from miodvallat/immuluability
Miod Vallat [Mon, 18 May 2026 14:49:44 +0000 (16:49 +0200)] 
Merge pull request #17131 from miodvallat/immuluability

auth: make lua records immutable by default

2 weeks agodnsdist: Reformat harder
Remi Gacogne [Mon, 18 May 2026 14:38:04 +0000 (16:38 +0200)] 
dnsdist: Reformat harder

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Update Quiche to 0.29.0 in our packages 17401/head
Remi Gacogne [Mon, 18 May 2026 14:19:53 +0000 (16:19 +0200)] 
dnsdist: Update Quiche to 0.29.0 in our packages

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoDo not serialize records over 64K in length. 17447/head
Miod Vallat [Mon, 18 May 2026 14:19:49 +0000 (16:19 +0200)] 
Do not serialize records over 64K in length.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
2 weeks agocredentials: Fix formatting
Remi Gacogne [Mon, 18 May 2026 14:13:04 +0000 (16:13 +0200)] 
credentials: Fix formatting

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Silence clang-tidy 17392/head
Remi Gacogne [Mon, 18 May 2026 14:10:43 +0000 (16:10 +0200)] 
dnsdist: Silence clang-tidy

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: More clang-tidy fixes
Remi Gacogne [Mon, 18 May 2026 14:08:41 +0000 (16:08 +0200)] 
dnsdist: More clang-tidy fixes

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoMerge pull request #17394 from rgacogne/ddist-edns
Remi Gacogne [Mon, 18 May 2026 14:00:36 +0000 (16:00 +0200)] 
Merge pull request #17394 from rgacogne/ddist-edns

dnsdist: Fix two small EDNS addition related bugs

2 weeks agoMerge pull request #17396 from rgacogne/snmp-leak
Remi Gacogne [Mon, 18 May 2026 14:00:24 +0000 (16:00 +0200)] 
Merge pull request #17396 from rgacogne/snmp-leak

snmp-agent: Fix a memory leak

2 weeks agoMerge pull request #17397 from rgacogne/ddist-doq-max-query-size
Remi Gacogne [Mon, 18 May 2026 14:00:12 +0000 (16:00 +0200)] 
Merge pull request #17397 from rgacogne/ddist-doq-max-query-size

dnsdist: Check the DoQ query size against the received size

2 weeks agocredentials: Try even harder to clear existing content
Remi Gacogne [Mon, 18 May 2026 13:58:40 +0000 (15:58 +0200)] 
credentials: Try even harder to clear existing content

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoMerge pull request #17306 from PowerDNS/dependabot/github_actions/sigstore/cosign...
Remi Gacogne [Mon, 18 May 2026 13:42:08 +0000 (15:42 +0200)] 
Merge pull request #17306 from PowerDNS/dependabot/github_actions/sigstore/cosign-installer-4.1.2

build(deps): bump sigstore/cosign-installer from 4.1.1 to 4.1.2

2 weeks agoMerge pull request #17398 from rgacogne/libssl-minor-fixes
Remi Gacogne [Mon, 18 May 2026 13:38:41 +0000 (15:38 +0200)] 
Merge pull request #17398 from rgacogne/libssl-minor-fixes

libssl: Minor fixes

2 weeks agoMerge pull request #17399 from rgacogne/ddist-minor-fixes
Remi Gacogne [Mon, 18 May 2026 13:38:24 +0000 (15:38 +0200)] 
Merge pull request #17399 from rgacogne/ddist-minor-fixes

dnsdist: More minor fixes

2 weeks agodnsdist: Handle large YAML values for a backend weight
Remi Gacogne [Mon, 18 May 2026 13:36:37 +0000 (15:36 +0200)] 
dnsdist: Handle large YAML values for a backend weight

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agotcpiohandler: Appease clang-tidy
Remi Gacogne [Mon, 18 May 2026 12:50:22 +0000 (14:50 +0200)] 
tcpiohandler: Appease clang-tidy

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Really fix Python indentation 17390/head
Remi Gacogne [Mon, 18 May 2026 12:48:22 +0000 (14:48 +0200)] 
dnsdist: Really fix Python indentation

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Hopefully fixes spurious failures of TestHealthCheckLatency 17400/head
Remi Gacogne [Mon, 18 May 2026 12:40:02 +0000 (14:40 +0200)] 
dnsdist: Hopefully fixes spurious failures of TestHealthCheckLatency

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoMerge pull request #17395 from rgacogne/ddist-logging-iso8601
Remi Gacogne [Mon, 18 May 2026 11:58:47 +0000 (13:58 +0200)] 
Merge pull request #17395 from rgacogne/ddist-logging-iso8601

dnsdist: Use the correct timestamp, not now, for ISO-8601 format

2 weeks agoMerge pull request #17391 from rgacogne/ddist-tee-metrics
Remi Gacogne [Mon, 18 May 2026 11:58:36 +0000 (13:58 +0200)] 
Merge pull request #17391 from rgacogne/ddist-tee-metrics

dnsdist: Fix TeeAction metrics on error/short datagrams

2 weeks agodnsdist: Fix Python formatting
Remi Gacogne [Mon, 18 May 2026 11:12:29 +0000 (13:12 +0200)] 
dnsdist: Fix Python formatting

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Porperly skip network addresses with no mask 17399/head
Remi Gacogne [Mon, 18 May 2026 11:05:20 +0000 (13:05 +0200)] 
dnsdist: Porperly skip network addresses with no mask

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Keep processing XSK packets on exception
Remi Gacogne [Mon, 18 May 2026 11:04:42 +0000 (13:04 +0200)] 
dnsdist: Keep processing XSK packets on exception

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Prevent UB when OT object it not found on the stack
Remi Gacogne [Mon, 18 May 2026 11:04:04 +0000 (13:04 +0200)] 
dnsdist: Prevent UB when OT object it not found on the stack

This should not happen, but we know how it goes..

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Handle small MAC addresses
Remi Gacogne [Mon, 18 May 2026 11:03:42 +0000 (13:03 +0200)] 
dnsdist: Handle small MAC addresses

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Move the NetworkListener's data earlier to prevent a race
Remi Gacogne [Mon, 18 May 2026 11:03:09 +0000 (13:03 +0200)] 
dnsdist: Move the NetworkListener's data earlier to prevent a race

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Increase the correct bucket for high-latency responses
Remi Gacogne [Mon, 18 May 2026 11:02:14 +0000 (13:02 +0200)] 
dnsdist: Increase the correct bucket for high-latency responses

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Fix duplicate entry for setTCPConnectionsOverloadThreshold
Remi Gacogne [Mon, 18 May 2026 11:01:49 +0000 (13:01 +0200)] 
dnsdist: Fix duplicate entry for setTCPConnectionsOverloadThreshold

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Correct error message in setHealthCheckResponseValidator
Remi Gacogne [Mon, 18 May 2026 11:01:29 +0000 (13:01 +0200)] 
dnsdist: Correct error message in setHealthCheckResponseValidator

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agolibssl: Properly deal with an empty error stack in `libssl_get_error_string` 17398/head
Remi Gacogne [Mon, 18 May 2026 10:58:14 +0000 (12:58 +0200)] 
libssl: Properly deal with an empty error stack in `libssl_get_error_string`

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agolibssl: Fix the position of OCSP files on errors
Remi Gacogne [Mon, 18 May 2026 10:57:25 +0000 (12:57 +0200)] 
libssl: Fix the position of OCSP files on errors

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Check the DoQ query size against the received size 17397/head
Remi Gacogne [Mon, 18 May 2026 10:53:48 +0000 (12:53 +0200)] 
dnsdist: Check the DoQ query size against the received size

The existing code was doing the check against the size
allocated, not the one actually used.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agosnmp-agent: Fix a memory leak 17396/head
Remi Gacogne [Mon, 18 May 2026 10:50:21 +0000 (12:50 +0200)] 
snmp-agent: Fix a memory leak

We need to call netsnmp_large_fd_set_cleanup to release the
memory allocated by netsnmp_large_fd_set_init.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Use the correct timestamp, not now, for ISO-8601 format 17395/head
Remi Gacogne [Mon, 18 May 2026 10:45:52 +0000 (12:45 +0200)] 
dnsdist: Use the correct timestamp, not now, for ISO-8601 format

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Proper error handling in setEDNSOption 17394/head
Remi Gacogne [Mon, 18 May 2026 10:42:33 +0000 (12:42 +0200)] 
dnsdist: Proper error handling in setEDNSOption

We need to return false when it was not possible to set the option,
and to properly set the value indicating that we added an EDNS OPT
RR if needed.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Handle empty EDNS options in slowRewriteEDNSOptionInQueryWithRecords
Remi Gacogne [Mon, 18 May 2026 10:41:39 +0000 (12:41 +0200)] 
dnsdist: Handle empty EDNS options in slowRewriteEDNSOptionInQueryWithRecords

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Ignore valid backend weight coming from YAML
Remi Gacogne [Mon, 18 May 2026 10:39:48 +0000 (12:39 +0200)] 
dnsdist: Ignore valid backend weight coming from YAML

We do handle that in the Lua configuration already.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agotcpiohandler: Don't throw exceptions over the C/C++ boundary
Remi Gacogne [Mon, 18 May 2026 10:37:30 +0000 (12:37 +0200)] 
tcpiohandler: Don't throw exceptions over the C/C++ boundary

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Better handling of exceptions in outgoing DoH
Remi Gacogne [Mon, 18 May 2026 10:36:04 +0000 (12:36 +0200)] 
dnsdist: Better handling of exceptions in outgoing DoH

We cannot throw exceptions over the C++/C boundary.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Handle exceptions when dealing with asynchronous objects
Remi Gacogne [Mon, 18 May 2026 10:34:21 +0000 (12:34 +0200)] 
dnsdist: Handle exceptions when dealing with asynchronous objects

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Fix TeeAction metrics on error/short datagrams 17391/head
Remi Gacogne [Mon, 18 May 2026 10:32:10 +0000 (12:32 +0200)] 
dnsdist: Fix TeeAction metrics on error/short datagrams

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Fix a bug not always displaying the first eBPF entry of a map
Remi Gacogne [Mon, 18 May 2026 10:30:00 +0000 (12:30 +0200)] 
dnsdist: Fix a bug not always displaying the first eBPF entry of a map

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Don't count BPF range entries twice
Remi Gacogne [Mon, 18 May 2026 10:18:49 +0000 (12:18 +0200)] 
dnsdist: Don't count BPF range entries twice

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Fix invalid BPF map size check
Remi Gacogne [Mon, 18 May 2026 10:17:23 +0000 (12:17 +0200)] 
dnsdist: Fix invalid BPF map size check

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>