]>
git.ipfire.org Git - thirdparty/pdns.git/log
Remi Gacogne [Tue, 25 May 2021 13:37:59 +0000 (15:37 +0200)]
dnsdist: Fix a data race reported by TSAN in SNMP metrics
Unless I'm mistaken, the report (below) is a false positive since
`std::atomic<T>::operator T` is equivalent to `load()` and
`std::atomic<T>::operator=` to `store()`, but perhaps I'm missing
something.
Note that I could not reproduce the issue using clang++ 11.1.0's
TSAN, only with the one from g++ 11.1.0.
```
==================
WARNING: ThreadSanitizer: data race (pid=11157)
Atomic read of size 8 at 0x7b7400002580 by thread T2:
#0 __tsan_atomic64_load <null> (dnsdist+0x7a6eb0)
#1 std::atomic<double>::load(std::memory_order) const /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/atomic:250:2 (dnsdist+0x83c4da)
#2 pdns::stat_t_trait<double>::operator double() const /opt/project/pdns/dnsdistdist/./stat_t.hh:67:60 (dnsdist+0xd05b2e)
#3 backendStatTable_handler(netsnmp_mib_handler_s*, netsnmp_handler_registration_s*, netsnmp_agent_request_info_s*, netsnmp_request_info_s*) /opt/project/pdns/dnsdistdist/dnsdist-snmp.cc:356:54 (dnsdist+0xeceab8)
#4 netsnmp_call_next_handler <null> (libnetsnmpagent.so.30+0x2a0cc)
#5 SNMPAgent::handleSNMPQueryCB(int, boost::any&) /opt/project/pdns/dnsdistdist/snmp-agent.cc:96:13 (dnsdist+0xfb2417)
#6 boost::detail::function::void_function_invoker2<void (*)(int, boost::any&), void, int, boost::any&>::invoke(boost::detail::function::function_buffer&, int, boost::any&) /usr/include/boost/function/function_template.hpp:118:11 (dnsdist+0x8956e8)
#7 boost::function2<void, int, boost::any&>::operator()(int, boost::any&) const /usr/include/boost/function/function_template.hpp:768:14 (dnsdist+0xf9f13c)
#8 EpollFDMultiplexer::run(timeval*, int) /opt/project/pdns/dnsdistdist/epollmplexer.cc:176:7 (dnsdist+0xfd1feb)
#9 SNMPAgent::worker() /opt/project/pdns/dnsdistdist/snmp-agent.cc:141:24 (dnsdist+0xfb273f)
#10 void std::__invoke_impl<void, void (SNMPAgent::*)(), SNMPAgent*>(std::__invoke_memfun_deref, void (SNMPAgent::*&&)(), SNMPAgent*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/invoke.h:73:14 (dnsdist+0xf36079)
#11 std::__invoke_result<void (SNMPAgent::*)(), SNMPAgent*>::type std::__invoke<void (SNMPAgent::*)(), SNMPAgent*>(void (SNMPAgent::*&&)(), SNMPAgent*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/invoke.h:95:14 (dnsdist+0xf35f71)
#12 decltype(std::__invoke(_S_declval<0ul>(), _S_declval<1ul>())) std::thread::_Invoker<std::tuple<void (SNMPAgent::*)(), SNMPAgent*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/thread:244:13 (dnsdist+0xf35f1e)
#13 std::thread::_Invoker<std::tuple<void (SNMPAgent::*)(), SNMPAgent*> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/thread:253:11 (dnsdist+0xf35ec5)
#14 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (SNMPAgent::*)(), SNMPAgent*> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/thread:196:13 (dnsdist+0xf35c29)
#15 <null> <null> (libstdc++.so.6+0xbbb2e)
Previous write of size 8 at 0x7b7400002580 by thread T18:
[failed to restore the stack]
Location is heap block of size 2304 at 0x7b7400001e00 allocated by main thread:
#0 operator new(unsigned long, std::align_val_t) <null> (dnsdist+0x7e8c57)
#1 __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<DownstreamState>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/ext/new_allocator.h:108:31 (dnsdist+0xe6b4e2)
#2 std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<DownstreamState>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<DownstreamState>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/alloc_traits.h:436:20 (dnsdist+0xe6b430)
#3 std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<DownstreamState>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<DownstreamState>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<DownstreamState, std::allocator<DownstreamState>, (__gnu_cxx::_Lock_policy)2> >&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/allocated_ptr.h:97:21 (dnsdist+0xe6b1d0)
#4 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<DownstreamState, std::allocator<DownstreamState>, ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool>(DownstreamState*&, std::_Sp_alloc_shared_tag<std::allocator<DownstreamState> >, ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr_base.h:675:19 (dnsdist+0xe6fb0a)
#5 std::__shared_ptr<DownstreamState, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<DownstreamState>, ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool>(std::_Sp_alloc_shared_tag<std::allocator<DownstreamState> >, ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr_base.h:1342:14 (dnsdist+0xe6fa7a)
#6 std::shared_ptr<DownstreamState>::shared_ptr<std::allocator<DownstreamState>, ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool>(std::_Sp_alloc_shared_tag<std::allocator<DownstreamState> >, ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr.h:359:4 (dnsdist+0xe6f99d)
#7 std::shared_ptr<DownstreamState> std::allocate_shared<DownstreamState, std::allocator<DownstreamState>, ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool>(std::allocator<DownstreamState> const&, ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr.h:705:14 (dnsdist+0xe6f8e0)
#8 std::shared_ptr<DownstreamState> std::make_shared<DownstreamState, ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool>(ComboAddress&, ComboAddress&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&, bool&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr.h:721:14 (dnsdist+0xe6a726)
#9 setupLuaConfig(LuaContext&, bool, bool)::$_2::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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > >, boost::optional<int>) const /opt/project/pdns/dnsdistdist/dnsdist-lua.cc:356:11 (dnsdist+0xdf9166)
#10 _ZN10LuaContext6BinderIRZL14setupLuaConfigRS_bbE3$_2RKN5boost7variantINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJSt13unordered_mapISB_NS5_IbJSB_St6vectorISt4pairIiSB_ESaISF_EESt8functionIFSt5tupleIJ7DNSNamettEERKSK_ttP9dnsheaderEEEEESt4hashISB_ESt8equal_toISB_ESaISE_IKSB_SS_EEEEEEEclIJRKNS4_8optionalIiEEEEEDTcldtdefpT8functiondtdefpT5paramspclsr3stdE7forwardIT_Efp_EEEDpOS1A_ /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:1846:20 (dnsdist+0xdf89af)
#11 _ZN10LuaContext6BinderIRNS0_IRZL14setupLuaConfigRS_bbE3$_2RKN5boost7variantINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJSt13unordered_mapISB_NS5_IbJSB_St6vectorISt4pairIiSB_ESaISF_EESt8functionIFSt5tupleIJ7DNSNamettEERKSK_ttP9dnsheaderEEEEESt4hashISB_ESt8equal_toISB_ESaISE_IKSB_SS_EEEEEEEERKNS4_8optionalIiEEEclIJEEEDTcldtdefpT8functiondtdefpT5paramspclsr3stdE7forwardIT_Efp_EEEDpOS1C_ /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:1846:20 (dnsdist+0xdf8917)
#12 std::shared_ptr<DownstreamState> LuaContext::readIntoFunction<std::shared_ptr<DownstreamState>, LuaContext::Binder<LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_2&, 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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > > const&>&, boost::optional<int> const&>&>(lua_State*, LuaContext::tag<std::shared_ptr<DownstreamState> >, LuaContext::Binder<LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_2&, 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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > > const&>&, boost::optional<int> const&>&, int) /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:1766:16 (dnsdist+0xdf88be)
#13 std::enable_if<IsOptional<boost::optional<int> >::value, std::shared_ptr<DownstreamState> >::type LuaContext::readIntoFunction<std::shared_ptr<DownstreamState>, LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_2&, 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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > > const&>&, boost::optional<int> >(lua_State*, LuaContext::tag<std::shared_ptr<DownstreamState> >, LuaContext::Binder<setupLuaConfig(LuaContext&, bool, bool)::$_2&, 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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > > const&>&, int, LuaContext::tag<boost::optional<int> >) /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:1774:20 (dnsdist+0xdf8624)
#14 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::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::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)::$_2&, 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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > >, boost::optional<int> >(lua_State*, LuaContext::tag<std::shared_ptr<DownstreamState> >, setupLuaConfig(LuaContext&, bool, bool)::$_2&, 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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > > >, LuaContext::tag<boost::optional<int> >) /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:1796:16 (dnsdist+0xdf848d)
#15 std::enable_if<(!(std::integral_constant<bool, false>::value)) && (!(std::is_void<bool>::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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > >, boost::optional<int>), void>::callback2<setupLuaConfig(LuaContext&, bool, bool)::$_2&>(lua_State*, bool&&, int) /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:2429:31 (dnsdist+0xdf83c2)
#16 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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > >, boost::optional<int>), void>::callback<setupLuaConfig(LuaContext&, bool, bool)::$_2>(lua_State*, setupLuaConfig(LuaContext&, bool, bool)::$_2*, int) /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:2398:20 (dnsdist+0xdf8169)
#17 std::enable_if<boost::has_trivial_destructor<setupLuaConfig(LuaContext&, bool, bool)::$_2>::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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > >, boost::optional<int>), void>::push<setupLuaConfig(LuaContext&, bool, bool)::$_2>(lua_State*, setupLuaConfig(LuaContext&, bool, bool)::$_2)::'lambda'(lua_State*)::operator()(lua_State*) const /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:2327:20 (dnsdist+0xdf80c9)
#18 std::enable_if<boost::has_trivial_destructor<setupLuaConfig(LuaContext&, bool, bool)::$_2>::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::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::function<std::tuple<DNSName, unsigned short, unsigned short> (DNSName const&, unsigned short, unsigned short, dnsheader*)> > > > > >, boost::optional<int>), void>::push<setupLuaConfig(LuaContext&, bool, bool)::$_2>(lua_State*, setupLuaConfig(LuaContext&, bool, bool)::$_2)::'lambda'(lua_State*)::__invoke(lua_State*) /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:2323:31 (dnsdist+0xdf8055)
#19 _init <null> (libluajit-5.1.so.2+0x9dd6)
#20 std::tuple<> LuaContext::call<std::tuple<> >(lua_State*, LuaContext::PushedObject) /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:1413:29 (dnsdist+0xc9ae67)
#21 LuaContext::executeCode(std::istream&) /opt/project/pdns/dnsdistdist/./ext/luawrapper/include/LuaContext.hpp:267:9 (dnsdist+0xe6077a)
#22 setupLua(LuaContext&, bool, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /opt/project/pdns/dnsdistdist/dnsdist-lua.cc:2599:10 (dnsdist+0xdf4ff3)
#23 main /opt/project/pdns/dnsdistdist/dnsdist.cc:2235:17 (dnsdist+0xf282ea)
Thread T2 'dnsdist/SNMP' (tid=11160, running) created by main thread at:
#0 pthread_create <null> (dnsdist+0x75f2d5)
#1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xbbdb4)
#2 SNMPAgent::run() /opt/project/pdns/dnsdistdist/./snmp-agent.hh:36:14 (dnsdist+0xf3087c)
#3 main /opt/project/pdns/dnsdistdist/dnsdist.cc:2373:20 (dnsdist+0xf28f32)
Thread T18 'dnsdist/healthC' (tid=11176, running) created by main thread at:
#0 pthread_create <null> (dnsdist+0x75f2d5)
#1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xbbdb4)
#2 main /opt/project/pdns/dnsdistdist/dnsdist.cc:2463:12 (dnsdist+0xf29769)
SUMMARY: ThreadSanitizer: data race (/opt/dnsdist-with-tsan/bin/dnsdist+0x7a6eb0) in __tsan_atomic64_load
```
Peter van Dijk [Fri, 21 May 2021 17:00:46 +0000 (19:00 +0200)]
Merge pull request #10430 from mind04/pdns-wording
auth: use primary and secondary for pdnsutil and pdns_control commands
Kees Monshouwer [Wed, 19 May 2021 19:04:52 +0000 (21:04 +0200)]
auth: update pdnsutil help message
Kees Monshouwer [Tue, 18 May 2021 19:19:13 +0000 (21:19 +0200)]
auth: use primary/seconday in pddns_control and s/zone/domain
Kees Monshouwer [Tue, 18 May 2021 19:02:49 +0000 (21:02 +0200)]
auth: use primary/seconday in pdnsutil
Peter van Dijk [Thu, 20 May 2021 12:35:09 +0000 (14:35 +0200)]
Merge pull request #10399 from mind04/pdns-recheck
auth: make sure we recheck failed SOA lookups for notifies
Remi Gacogne [Thu, 20 May 2021 05:15:56 +0000 (07:15 +0200)]
Merge pull request #10429 from rgacogne/loop-warnings
Fix 'temporary used in loop' warnings reported by g++ 11.1.0
Remi Gacogne [Wed, 19 May 2021 17:44:12 +0000 (19:44 +0200)]
auth: Fix a 'temporary used in loop' warning reported by g++ 11.1.0
```
common_startup.cc: In function ‘void mainthread()’:
common_startup.cc:617:24: warning: loop variable ‘algotype’ of type ‘const string&’ {aka ‘const std::__cxx11::basic_string<char>&’} binds to a temporary constructed from type ‘const char* const’ [-Wrange-loop-construct]
617 | for (const string& algotype : {"ksk", "zsk"}) {
| ^~~~~~~~
common_startup.cc:617:24: note: use non-reference type ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} to make the copy explicit or ‘const char* const&’ to prevent copying
```
Remi Gacogne [Wed, 19 May 2021 17:23:24 +0000 (19:23 +0200)]
test-dnsname_cc.cc: Fix a 'temporary used in loop' warning reported by g++ 11.1.0
```
test-dnsname_cc.cc: In member function ‘void test_dnsname_cc::test_compare_canonical::test_method()’:
test-dnsname_cc.cc:684:26: warning: loop variable ‘b’ of type ‘const string&’ {aka ‘const std::__cxx11::basic_string<char>&’} binds to a temporary constructed from type ‘const char* const’ [-Wrange-loop-construct]
684 | for(const std::string& b : {"bert.com.", "alpha.nl.", "articles.xxx.",
| ^
test-dnsname_cc.cc:684:26: note: use non-reference type ‘const string’ {aka ‘const std::__cxx11::basic_string<char>’} to make the copy explicit or ‘const char* const&’ to prevent copying
```
Peter van Dijk [Wed, 19 May 2021 16:38:35 +0000 (18:38 +0200)]
Merge pull request #10421 from mind04/pdns-list-zones
auth: add an option to in/exclude disabled zones in the pdnsutil list-all-zone and list-keys output.
Peter van Dijk [Wed, 19 May 2021 15:59:51 +0000 (17:59 +0200)]
Merge pull request #10260 from mind04/pdns-nsec3param
auth: lower max-nsec3-iterations to 100
Kees Monshouwer [Wed, 19 May 2021 15:02:25 +0000 (17:02 +0200)]
auth: pdnsutil, use cmds.at()
Kees Monshouwer [Thu, 4 Mar 2021 15:27:53 +0000 (16:27 +0100)]
auth: optionally include disabled or empty zones in the pdnsutil list-all-zone and list-keys output
Kees Monshouwer [Thu, 1 Apr 2021 18:03:28 +0000 (20:03 +0200)]
auth: lower max-nsec3-iterations to 100
Peter van Dijk [Wed, 19 May 2021 14:06:29 +0000 (16:06 +0200)]
Merge pull request #10424 from mind04/pdns-domain2zone
auth: replace domain-metadata-cache-ttl by zone-metadata-cache-ttl
Kees Monshouwer [Tue, 18 May 2021 16:55:44 +0000 (18:55 +0200)]
auth: change domain to zone round 1
Kees Monshouwer [Tue, 18 May 2021 16:44:20 +0000 (18:44 +0200)]
auth: replace domain-metadata-cache-ttl by zone-metadata-cache-ttl
Peter van Dijk [Wed, 19 May 2021 10:52:54 +0000 (12:52 +0200)]
Merge pull request #9464 from zeha/zonecache
auth: cache list of all domains
Peter van Dijk [Wed, 19 May 2021 09:15:21 +0000 (11:15 +0200)]
test zone-cache in gsqlite3 master and slave, with low TTL for more intensive testing
Otto Moerbeek [Wed, 19 May 2021 08:35:53 +0000 (10:35 +0200)]
Merge pull request #10349 from omoerbeek/rec-tcpiohandler
rec: move to tcpiohandler for outgoing TCP
Otto Moerbeek [Wed, 19 May 2021 08:34:49 +0000 (10:34 +0200)]
Merge pull request #10420 from omoerbeek/rec-nod-no-qm
rec: For the NOD lookup case, we don't want QName Minimization.
Remi Gacogne [Wed, 19 May 2021 07:21:31 +0000 (09:21 +0200)]
Merge pull request #10381 from rgacogne/ddist-better-padding
dnsdist: Reorganize the IDState and Rings fields
Chris Hofstaedtler [Tue, 18 May 2021 19:18:56 +0000 (21:18 +0200)]
Rename domaincache to zonecache, also ttl to refreshinterval
Otto Moerbeek [Tue, 18 May 2021 16:57:15 +0000 (18:57 +0200)]
Merge pull request #10282 from omoerbeek/qtype-tostring
Rename QType.getName() to QType.toString()
Otto [Fri, 9 Apr 2021 12:46:26 +0000 (14:46 +0200)]
Rename QType.getName() to QType.toString()
Peter van Dijk [Tue, 18 May 2021 15:41:04 +0000 (17:41 +0200)]
Merge pull request #10401 from mind04/consistent
auth: change the consistent-backends default to 'yes'
Otto [Tue, 18 May 2021 13:40:44 +0000 (15:40 +0200)]
For the NOD lookup case, we don't want QName Minimization.
Chris Hofstaedtler [Tue, 18 May 2021 12:11:59 +0000 (14:11 +0200)]
ueberbackend: include disabled domains in cache
Chris Hofstaedtler [Tue, 18 May 2021 12:10:38 +0000 (14:10 +0200)]
Add (domain-)cache-ttl to gsqlite3-master CI
Kees Monshouwer [Wed, 12 May 2021 23:18:41 +0000 (01:18 +0200)]
auth: change the consistent-backends default to 'yes'
Chris Hofstaedtler [Tue, 18 May 2021 07:56:21 +0000 (09:56 +0200)]
Treat vanished domains like they were never in the cache
Peter van Dijk [Mon, 17 May 2021 09:56:56 +0000 (11:56 +0200)]
Merge pull request #10400 from mind04/headers
add missing includes (Fedora 34, gcc 11.1 / clang 12)
Chris Hofstaedtler [Sat, 15 May 2021 22:10:59 +0000 (00:10 +0200)]
getAuth: abort if backend returned wrong SOA for cached domain
Chris Hofstaedtler [Sat, 15 May 2021 22:10:42 +0000 (00:10 +0200)]
getAuth: avoid throwing when no SOA is returned for cached domain
Chris Hofstaedtler [Mon, 10 May 2021 08:28:35 +0000 (10:28 +0200)]
auth-domaincache: use info-zone-query for inserted zone id
Also apply "RETURNING id" optimization for postgresql.
Chris Hofstaedtler [Mon, 10 May 2021 15:29:42 +0000 (17:29 +0200)]
lmdbbackend/createDomain: reuse RW transaction
Chris Hofstaedtler [Wed, 12 May 2021 09:37:28 +0000 (11:37 +0200)]
auth-domaincache: apply suggested comment improvement
Chris Hofstaedtler [Mon, 10 May 2021 08:31:12 +0000 (10:31 +0200)]
Apply clang-format
Chris Hofstaedtler [Mon, 10 May 2021 08:27:55 +0000 (10:27 +0200)]
auth-domaincache: add "new" headers
Chris Hofstaedtler [Mon, 10 May 2021 08:16:10 +0000 (10:16 +0200)]
setReplacePending: avoid lock
Chris Hofstaedtler [Mon, 10 May 2021 08:15:33 +0000 (10:15 +0200)]
test-auth-domaincache_cc: check zoneId value explicitly
Chris Hofstaedtler [Mon, 10 May 2021 08:12:59 +0000 (10:12 +0200)]
Tidy up style nits
Chris Hofstaedtler [Mon, 29 Mar 2021 13:49:39 +0000 (15:49 +0200)]
domaincache: preserve domains added while replace data collection was running
Chris Hofstaedtler [Mon, 15 Mar 2021 09:05:27 +0000 (10:05 +0100)]
Reformat
Chris Hofstaedtler [Sun, 14 Mar 2021 21:57:23 +0000 (22:57 +0100)]
Remove unused d_ops
Chris Hofstaedtler [Mon, 8 Feb 2021 12:51:04 +0000 (13:51 +0100)]
Add separate auth domain cache test
Chris Hofstaedtler [Mon, 8 Feb 2021 12:34:09 +0000 (13:34 +0100)]
AuthDomainCache: init d_ttl
Chris Hofstaedtler [Mon, 8 Feb 2021 12:33:58 +0000 (13:33 +0100)]
AuthDomainCache: use std::move
Chris Hofstaedtler [Mon, 8 Feb 2021 12:33:47 +0000 (13:33 +0100)]
Move extern AuthDomainCache into auth-domaincache.hh
Chris Hofstaedtler [Thu, 29 Oct 2020 11:59:02 +0000 (12:59 +0100)]
Enable domain cache on gsql tests
Chris Hofstaedtler [Thu, 29 Oct 2020 11:54:43 +0000 (12:54 +0100)]
Avoid abort if database server goes away
Chris Hofstaedtler [Mon, 19 Oct 2020 14:21:17 +0000 (16:21 +0200)]
auth: add a cache of existing domains
Kees Monshouwer [Tue, 11 May 2021 08:27:01 +0000 (10:27 +0200)]
add missing includes (Fedora 34, gcc 11.1 / clang 12)
Otto Moerbeek [Wed, 12 May 2021 14:24:01 +0000 (16:24 +0200)]
Merge pull request #10397 from aj-gh/fixdoc-refreshonttlperc
Fix docs: refresh-on-ttl-perc was added in 4.5.0
Andreas Jakum [Wed, 12 May 2021 13:52:07 +0000 (15:52 +0200)]
Fix docs: refresh-on-ttl-perc was added in 4.5.0
Peter van Dijk [Wed, 12 May 2021 11:45:50 +0000 (13:45 +0200)]
Merge pull request #10392 from Habbie/gpgsql-select-returning
auth gpgsql: use SELECT .. RETURNING to get inserted row ID
Otto Moerbeek [Wed, 12 May 2021 10:48:29 +0000 (12:48 +0200)]
Merge pull request #10394 from mnordhoff/rec-upgrade
Combine duplicate sections in Recursor upgrade guide
Peter van Dijk [Wed, 12 May 2021 10:26:55 +0000 (12:26 +0200)]
pdnsutil add-zone-key: better error formatting
Peter van Dijk [Wed, 12 May 2021 10:26:36 +0000 (12:26 +0200)]
auth gpgsql: use SELECT .. RETURNING to get inserted row ID, fixes #7175
Matt Nordhoff [Wed, 12 May 2021 08:07:01 +0000 (08:07 +0000)]
Combine duplicate sections in Recursor upgrade guide.
Also use more consistent capitalization and wording.
Pieter Lexis [Tue, 11 May 2021 16:11:53 +0000 (18:11 +0200)]
Merge pull request #10389 from Habbie/dockerignore-git
.dockerignore: do not ignore .git
Otto Moerbeek [Tue, 11 May 2021 13:25:08 +0000 (15:25 +0200)]
Merge pull request #10391 from omoerbeek/rec-fastopen-docs
rec: Better wording for fastopen docs.
Remi Gacogne [Tue, 11 May 2021 12:54:48 +0000 (14:54 +0200)]
Merge pull request #10350 from rgacogne/rec-duplicate-nsec-wc-proof
rec: Only add the NSEC and RRSIG records once in wildcard NODATA answers
Otto [Tue, 11 May 2021 12:18:58 +0000 (14:18 +0200)]
Better wording for fastopen docs.
Remi Gacogne [Tue, 11 May 2021 12:00:25 +0000 (14:00 +0200)]
Merge pull request #10388 from rgacogne/ddist-document-default-cache-cleaning-delay
dnsdist: Document the default value of setCacheCleaningDelay()
Peter van Dijk [Tue, 11 May 2021 10:27:33 +0000 (12:27 +0200)]
.dockerignore: do not ignore .git
because we ignore **/*.1 to not drag built manpages into the docker
context - but this also prevents any tags ending in .1 (like rec-4.5.1)
from being built
Remi Gacogne [Tue, 11 May 2021 10:01:52 +0000 (12:01 +0200)]
dnsdist: Document the default value of setCacheCleaningDelay()
Otto Moerbeek [Tue, 11 May 2021 09:30:54 +0000 (11:30 +0200)]
Merge pull request #10368 from omoerbeek/rec-prep-4.5.0
rec: Prep rec-4.5.1
Otto [Tue, 11 May 2021 08:07:00 +0000 (10:07 +0200)]
Rebase after secpoll update
Otto [Mon, 10 May 2021 10:38:46 +0000 (12:38 +0200)]
It's going to be 4.5.1
Otto Moerbeek [Fri, 7 May 2021 14:52:46 +0000 (16:52 +0200)]
Update pdns/recursordist/docs/appendices/EOL.rst
Co-authored-by: Pieter Lexis <pieter@plexis.eu>
Otto [Fri, 7 May 2021 07:32:04 +0000 (09:32 +0200)]
Prep rec-4.5.0
Remi Gacogne [Tue, 11 May 2021 08:00:36 +0000 (10:00 +0200)]
Merge pull request #10374 from rgacogne/ddist160-changelog
dnsdist: Changelog and secpoll update for 1.6.0
Remi Gacogne [Mon, 10 May 2021 08:18:53 +0000 (10:18 +0200)]
dnsdist: Changelog and secpoll update for 1.6.0
Remi Gacogne [Mon, 10 May 2021 14:03:52 +0000 (16:03 +0200)]
dnsdist: Add a few words about memory consumption in the documentation
Remi Gacogne [Mon, 10 May 2021 13:53:56 +0000 (15:53 +0200)]
dnsdist: Reorganize the IDState and Rings fields
Reducing the space lost to padding and thus the memory usage. This
change saves 1 MB of memory per downstream server in the default
configuration, and around 8 bytes per entry in the ring buffer.
Remi Gacogne [Mon, 10 May 2021 12:12:08 +0000 (14:12 +0200)]
Merge pull request #10379 from rgacogne/ddist-fix-changelog
dnsdist: Fix a typo in the ChangeLog header for 1.5.2
Remi Gacogne [Mon, 10 May 2021 12:08:20 +0000 (14:08 +0200)]
dnsdist: Fix a typo in the ChangeLog header for 1.5.2
Remi Gacogne [Mon, 10 May 2021 11:53:34 +0000 (13:53 +0200)]
Merge pull request #10163 from rgacogne/ddist152-changelog
dnsdist: Update ChangeLog and secpoll zone for 1.5.2
Otto Moerbeek [Mon, 10 May 2021 10:24:53 +0000 (12:24 +0200)]
Merge pull request #10375 from rgacogne/rec-aggressive-nsec-salt-race
rec: Prevent a race in the aggressive NSEC cache
Peter van Dijk [Mon, 10 May 2021 07:44:35 +0000 (09:44 +0200)]
Merge pull request #10364 from rgacogne/auth-fromiscmap-b64
auth: Don't choke on non-base64 values when importing zone keys
Remi Gacogne [Fri, 7 May 2021 15:25:01 +0000 (17:25 +0200)]
rec: Prevent a race in the aggressive NSEC cache
When a new NSEC3 record has a different salt than the one we know, we
update the zone entry with the new salt. Unfortunately, that salt was
read without holding the lock in `AggressiveNSECCache::getNSEC3Denial`,
leading to a possible data race.
Peter van Dijk [Sat, 8 May 2021 20:01:58 +0000 (22:01 +0200)]
Merge pull request #10370 from yantarou/ixfrdist_typo
docs: fix typo in ixfrdist docs
Pieter Lexis [Fri, 7 May 2021 12:34:02 +0000 (14:34 +0200)]
Merge pull request #10371 from mnordhoff/dnsdist-docs-tcaction
dnsdist docs: switch RA and RD
Matt Nordhoff [Fri, 7 May 2021 10:55:31 +0000 (10:55 +0000)]
dnsdist docs: switch RA and RD
Jan Hilberath [Fri, 7 May 2021 10:07:46 +0000 (19:07 +0900)]
docs: fix typo in ixfrdist docs
Remi Gacogne [Fri, 7 May 2021 07:55:03 +0000 (09:55 +0200)]
dnsdist: May the 10th seems more realistic for the 1.5.2 release
Otto Moerbeek [Thu, 6 May 2021 18:18:22 +0000 (20:18 +0200)]
Merge pull request #10353 from rgacogne/rec-dns64-on-rpz-hit-after-gettag-ffi-hit
rec: Apply dns64 on RPZ hits generated after a gettag_ffi hit
Otto Moerbeek [Thu, 6 May 2021 18:17:24 +0000 (20:17 +0200)]
Merge pull request #10292 from omoerbeek/rec-more-tsan
rec: Fix TSAN complaints: max stacksize and response stats size counters
Peter van Dijk [Thu, 6 May 2021 13:51:23 +0000 (15:51 +0200)]
Merge pull request #10361 from dmachard/auth-timeout-luarecords
auth: change default timeout to 2s for lua records
Remi Gacogne [Thu, 6 May 2021 13:00:18 +0000 (15:00 +0200)]
Fix typo in DNSCryptoKeyEngine::makeFromISCString
Co-authored-by: Peter van Dijk <peter.van.dijk@powerdns.com>
Remi Gacogne [Thu, 6 May 2021 10:12:43 +0000 (12:12 +0200)]
auth: Don't choke on non-base64 values when importing zone keys
DNSCryptoKeyEngine::makeFromISCFile(), called by `pdnsutil import-zone-key`
or the API, for example, would try to parse almost all values as a
base64 string. Depending on the version of OpenSSL, it could have lead
to a weird `Error: BIO_read failed to read all data from memory buffer`
error when the file contains a non-base64 value, like for example:
```
Flags: 257
```
Recent versions of OpenSSL seems to simply return that the value could
not be parsed, but older ones (OpenSSL 1.0.2k from CentOS 7 for example)
would report an incomplete read (BIO_should_retry() returning 1),
triggering an exception that prevents the key from being loaded.
This commits keeps a longer list of known non-base64 values, but
more importantly catch the base64 decoding exception and then store the
initial value instead of aborting. Only failure to decode known base64
values prevents the key from being loaded.
Remi Gacogne [Thu, 6 May 2021 08:10:12 +0000 (10:10 +0200)]
Merge pull request #10362 from Habbie/dnsdist-docs-tcaction
dnsdist docs: correct bits for TCAction
Peter van Dijk [Thu, 6 May 2021 04:13:22 +0000 (06:13 +0200)]
dnsdist docs: correct bits for TCAction
dmachard [Wed, 5 May 2021 16:51:50 +0000 (18:51 +0200)]
change default timeout to 2s for lua records
Remi Gacogne [Tue, 4 May 2021 16:30:47 +0000 (18:30 +0200)]
rec: Test the most simple condition first
Co-authored-by: Otto Moerbeek <otto.moerbeek@open-xchange.com>
Remi Gacogne [Tue, 4 May 2021 16:24:21 +0000 (18:24 +0200)]
dnsdist: Update ChangeLog and secpoll zone for 1.5.2
Otto [Mon, 3 May 2021 12:34:29 +0000 (14:34 +0200)]
Start using tcpiohandler for real
Remi Gacogne [Tue, 4 May 2021 12:56:40 +0000 (14:56 +0200)]
rec: Add a regression test for gettag_ffi, RPZ and DNS64 interaction
Remi Gacogne [Tue, 4 May 2021 10:29:32 +0000 (12:29 +0200)]
rec: Apply dns64 on RPZ hits generated after a gettag_ffi hit
We do special case the qname RPZ processing after a gettag_ffi hit,
leading to dns64 to not be applied in that case. This commit adds
dns64 handling to the special case.