]> git.ipfire.org Git - thirdparty/pdns.git/log
thirdparty/pdns.git
4 months agorepo-test: also show compiled-in features 15250/head
Peter van Dijk [Tue, 4 Mar 2025 14:37:03 +0000 (15:37 +0100)] 
repo-test: also show compiled-in features

5 months agoMerge pull request #15176 from Habbie/lmdb-prefix-lookup
Peter van Dijk [Fri, 28 Feb 2025 12:33:42 +0000 (13:33 +0100)] 
Merge pull request #15176 from Habbie/lmdb-prefix-lookup

lmdb-safe: add prefix() cursor; use it in list/lookup/get

5 months agoexplicit int checks 15176/head
Peter van Dijk [Fri, 28 Feb 2025 11:02:22 +0000 (12:02 +0100)] 
explicit int checks

5 months agoremove redundant check
Peter van Dijk [Fri, 28 Feb 2025 11:01:33 +0000 (12:01 +0100)] 
remove redundant check

5 months agoadjust updateDNSSECOrderNameAndAuth to prefix() lookup
Peter van Dijk [Fri, 28 Feb 2025 10:23:35 +0000 (11:23 +0100)] 
adjust updateDNSSECOrderNameAndAuth to prefix() lookup

5 months agolmdb-safe: add prefix() cursor; use it in list/lookup/get
Peter van Dijk [Wed, 19 Feb 2025 18:28:22 +0000 (19:28 +0100)] 
lmdb-safe: add prefix() cursor; use it in list/lookup/get

5 months agoMerge pull request #15222 from miodvallat/parse_with_more_care
Miod Vallat [Thu, 27 Feb 2025 12:54:36 +0000 (13:54 +0100)] 
Merge pull request #15222 from miodvallat/parse_with_more_care

Damage control in Lua createForward()

5 months agoDamage control in Lua createForward() and createForward6(). 15222/head
Miod Vallat [Wed, 26 Feb 2025 13:31:50 +0000 (14:31 +0100)] 
Damage control in Lua createForward() and createForward6().

- make sure all computed results are passed to a ComboAddress
  constructor, which will reject ill-formed data. This wasn't the case
  in createForward, when interpreting part of the requested name as an
  ipv4 address encoded in hexadecimal (e.g. 7f000001), but the actual
  name wasn't.
  This would otherwise end up with a SERVFAIL answer and a Lua stack
  traceback containing messages such as:
    Unable to convert presentation address '4294967292.xx.yy.zz'
  for a name ending with "-4" and six hex digits.

- wrap these functions into a try/catch block in order to cope with
  possible exceptions raised by ComboAddress.
  This wasn't the case in createForward6 when the requested name
  contains at least 8 dots - this doesn't imply each component is a
  valid ipv6 chunk.

5 months agoMerge pull request #15216 from omoerbeek/rec-recthread-cleanup
Otto Moerbeek [Wed, 26 Feb 2025 09:00:56 +0000 (10:00 +0100)] 
Merge pull request #15216 from omoerbeek/rec-recthread-cleanup

rec: store thread id in info object, makes a few methods less error prone

5 months agoApply suggestions from code review 15216/head
Otto Moerbeek [Wed, 26 Feb 2025 06:47:42 +0000 (07:47 +0100)] 
Apply suggestions from code review

Co-authored-by: Miod Vallat <miod.vallat@powerdns.com>
5 months agorec: store id in info object, makes a few methods less error prone
Otto Moerbeek [Fri, 14 Feb 2025 13:09:45 +0000 (14:09 +0100)] 
rec: store id in info object, makes a few methods less error prone

5 months agoMerge pull request #15203 from omoerbeek/rec-beck-to-serde-yaml
Otto Moerbeek [Mon, 24 Feb 2025 10:30:54 +0000 (11:30 +0100)] 
Merge pull request #15203 from omoerbeek/rec-beck-to-serde-yaml

rec: switch back to serde_yaml

5 months agoMerge pull request #15187 from Habbie/docs-pr-artifact
Peter van Dijk [Mon, 24 Feb 2025 10:30:42 +0000 (11:30 +0100)] 
Merge pull request #15187 from Habbie/docs-pr-artifact

docs: reinstate artifact generation for PRs

5 months agoMerge pull request #15205 from omoerbeek/dnsdist-back-to-serde-yaml
Otto Moerbeek [Mon, 24 Feb 2025 10:27:10 +0000 (11:27 +0100)] 
Merge pull request #15205 from omoerbeek/dnsdist-back-to-serde-yaml

dnsdist: switch back to serde_yaml

5 months agoMerge pull request #15206 from omoerbeek/rec-catz-test-race
Otto Moerbeek [Mon, 24 Feb 2025 09:34:11 +0000 (10:34 +0100)] 
Merge pull request #15206 from omoerbeek/rec-catz-test-race

rec: workaround a potential (but rare) race in the FWCatz test

5 months agoSwitch back to serde_yaml 15203/head
Otto Moerbeek [Mon, 24 Feb 2025 08:11:32 +0000 (09:11 +0100)] 
Switch back to serde_yaml

Fixes the rec part of #15202

5 months agoMerge pull request #15082 from miodvallat/dilnpstu
Miod Vallat [Mon, 24 Feb 2025 09:27:27 +0000 (10:27 +0100)] 
Merge pull request #15082 from miodvallat/dilnpstu

More helpful pdnsutil help output

5 months agoFriendlier usage output. 15082/head
Miod Vallat [Thu, 23 Jan 2025 14:28:26 +0000 (15:28 +0100)] 
Friendlier usage output.

1. The commands dictionary is extended with a command group, as well as
   the one-liner synopsis and help message. When the list of these
   one-liners get output, they are now output in sorted order within
   each group.

2. Instead of having the syntax on the leftmost 40 columns and the
   description on the rightmost 40 columns, causing many commands to
   span more than one line total, we now display the syntax on a whole
   line, and the description on the next one, indented by a tab.

   This should hopefully improve readability (especially for complex
   syntax lines).

3. The command synopsis is now passed to the command handler. This
   allows error messages in case of invocation error to be consistent
   with the output of `pdnsutil help`.

4. Tweak and homogeneize command synopsis, and sync the pdnsutil
   documentation accordingly.

Co-authored-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
5 months agorec: workaround a potential (but rare) race in the FWCatz test 15206/head
Otto Moerbeek [Fri, 21 Feb 2025 11:07:41 +0000 (12:07 +0100)] 
rec: workaround a potential (but rare) race in the FWCatz test

5 months agoMerge pull request #15200 from zeha/recdocssample
Otto Moerbeek [Mon, 24 Feb 2025 08:24:12 +0000 (09:24 +0100)] 
Merge pull request #15200 from zeha/recdocssample

rec: fix auth_zones yaml example

5 months agodnsdist: switch back to serde_yaml 15205/head
Otto Moerbeek [Mon, 24 Feb 2025 08:20:46 +0000 (09:20 +0100)] 
dnsdist: switch back to serde_yaml

Fixes the dnsdist part of #15202

5 months agorec: fix auth_zones yaml example 15200/head
Chris Hofstaedtler [Fri, 21 Feb 2025 14:26:01 +0000 (15:26 +0100)] 
rec: fix auth_zones yaml example

5 months agoMerge pull request #15185 from jsoref/primary-secondary
Miod Vallat [Fri, 21 Feb 2025 13:50:36 +0000 (14:50 +0100)] 
Merge pull request #15185 from jsoref/primary-secondary

docs: Update to primary/secondary

5 months agodocs: Fix docs to match reference to autosecondary 15185/head
Josh Soref [Fri, 21 Feb 2025 13:02:44 +0000 (08:02 -0500)] 
docs: Fix docs to match reference to autosecondary

The docs had been wrong since the feature was renamed in
d3dfd71e2d8cb56113a36d55df57864d16e5f6c2

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
5 months agoMerge pull request #15198 from rgacogne/ddist-coverity-20250221
Remi Gacogne [Fri, 21 Feb 2025 12:59:37 +0000 (13:59 +0100)] 
Merge pull request #15198 from rgacogne/ddist-coverity-20250221

dnsdist: Fix a few warnings from Coverity

5 months agoMerge pull request #15196 from rgacogne/rec-fix-secpoll-tsan
Remi Gacogne [Fri, 21 Feb 2025 11:04:44 +0000 (12:04 +0100)] 
Merge pull request #15196 from rgacogne/rec-fix-secpoll-tsan

rec: Fix a race reported by TSAN around the secpoll status

5 months agodnsdist: Fix a few warnings from Coverity 15198/head
Remi Gacogne [Fri, 21 Feb 2025 10:44:18 +0000 (11:44 +0100)] 
dnsdist: Fix a few warnings from Coverity

Mostly missed optimizations in places where the performance does not
matter much (configuration parsing) and a few false positives
(places where a copy is actually what we want, and Coverity is not
smart enough to understand it).

5 months agorec: Fix clang-tidy's warning 15196/head
Remi Gacogne [Fri, 21 Feb 2025 09:56:23 +0000 (10:56 +0100)] 
rec: Fix clang-tidy's warning

5 months agoMerge pull request #15194 from omoerbeek/rec-zf-file-syntax
Otto Moerbeek [Fri, 21 Feb 2025 09:36:41 +0000 (10:36 +0100)] 
Merge pull request #15194 from omoerbeek/rec-zf-file-syntax

rec: document file extension of zone forward file and do not accept empty list of forwards

5 months agoMerge pull request #15193 from omoerbeek/rec-top-million
Otto Moerbeek [Fri, 21 Feb 2025 09:36:21 +0000 (10:36 +0100)] 
Merge pull request #15193 from omoerbeek/rec-top-million

rec: update umbrella top million URLs

5 months agoMerge pull request #15192 from omoerbeek/include-fixes
Otto Moerbeek [Fri, 21 Feb 2025 09:35:52 +0000 (10:35 +0100)] 
Merge pull request #15192 from omoerbeek/include-fixes

Add two missing includes

5 months agorec: Fix a race reported by TSAN around the secpoll status
Remi Gacogne [Fri, 21 Feb 2025 09:09:13 +0000 (10:09 +0100)] 
rec: Fix a race reported by TSAN around the secpoll status

We used to store the security polling status in a regular integer,
and the status can be updated from the `rec/web+stat` thread while
being read from a Rust-based web-server thread, which is correctly
reported by TSAN as a data race:
```
  WARNING: ThreadSanitizer: data race (pid=2006)
    Write of size 4 at 0x55f19579db54 by thread T5:
      #0 doSecPoll(long*, std::shared_ptr<Logr::Logger> const&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/secpoll-recursor.cc:84:23 (pdns_recursor+0x814e3c)
      #1 SyncRes::doResolveAt(std::unordered_map<DNSName, std::pair<std::vector<ComboAddress, std::allocator<ComboAddress> >, bool>, std::hash<DNSName>, std::equal_to<DNSName>, std::allocator<std::pair<DNSName const, std::pair<std::vector<ComboAddress, std::allocator<ComboAddress> >, bool> > > >&, DNSName, bool, DNSName const&, QType, std::vector<DNSRecord, std::allocator<DNSRecord> >&, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::set<SyncRes::GetBestNSAnswer, std::less<SyncRes::GetBestNSAnswer>, std::allocator<SyncRes::GetBestNSAnswer> >&, SyncRes::Context&, SyncRes::StopAtDelegation*, std::map<DNSName, std::vector<ComboAddress, std::allocator<ComboAddress> >, std::less<DNSName>, std::allocator<std::pair<DNSName const, std::vector<ComboAddress, std::allocator<ComboAddress> > > > >*) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/syncres.cc:6040:25 (pdns_recursor+0x84be60)
      #2 SyncRes::doResolveNoQNameMinimization(DNSName const&, QType, std::vector<DNSRecord, std::allocator<DNSRecord> >&, unsigned int, std::set<SyncRes::GetBestNSAnswer, std::less<SyncRes::GetBestNSAnswer>, std::allocator<SyncRes::GetBestNSAnswer> >&, SyncRes::Context&, bool*, SyncRes::StopAtDelegation*) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/syncres.cc:2099:11 (pdns_recursor+0x838903)
      #3 SyncRes::doResolve(DNSName const&, QType, std::vector<DNSRecord, std::allocator<DNSRecord> >&, unsigned int, std::set<SyncRes::GetBestNSAnswer, std::less<SyncRes::GetBestNSAnswer>, std::allocator<SyncRes::GetBestNSAnswer> >&, SyncRes::Context&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/syncres.cc:1835:13 (pdns_recursor+0x825337)
      #4 SyncRes::beginResolve(DNSName const&, QType, QClass, std::vector<DNSRecord, std::allocator<DNSRecord> >&, unsigned int) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/syncres.cc:797:13 (pdns_recursor+0x828974)
      #5 doSecPoll(long*, std::shared_ptr<Logr::Logger> const&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/secpoll-recursor.cc:55:22 (pdns_recursor+0x814039)
      #6 houseKeepingWork(std::shared_ptr<Logr::Logger> const&)::$_18::operator()() const /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2651:9 (pdns_recursor+0x68abb3)
      #7 void std::__invoke_impl<void, houseKeepingWork(std::shared_ptr<Logr::Logger> const&)::$_18&>(std::__invoke_other, houseKeepingWork(std::shared_ptr<Logr::Logger> const&)::$_18&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (pdns_recursor+0x68abb3)
      #8 std::enable_if<is_invocable_r_v<void, houseKeepingWork(std::shared_ptr<Logr::Logger> const&)::$_18&>, void>::type std::__invoke_r<void, houseKeepingWork(std::shared_ptr<Logr::Logger> const&)::$_18&>(houseKeepingWork(std::shared_ptr<Logr::Logger> const&)::$_18&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (pdns_recursor+0x68abb3)
      #9 std::_Function_handler<void (), houseKeepingWork(std::shared_ptr<Logr::Logger> const&)::$_18>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (pdns_recursor+0x68abb3)
      #10 std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (pdns_recursor+0x688561)
      #11 PeriodicTask::runIfDue(timeval&, std::function<void ()> const&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2490:7 (pdns_recursor+0x688561)
      #12 houseKeepingWork(std::shared_ptr<Logr::Logger> const&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2649:17 (pdns_recursor+0x688561)
      #13 houseKeeping(void*) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2715:5 (pdns_recursor+0x688561)
      #14 MTasker<std::shared_ptr<PacketID>, std::vector<unsigned char, noinit_adaptor<std::allocator<unsigned char> > >, PacketIDCompare>::makeThread(void (*)(void*), void*)::'lambda'()::operator()() const /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/./mtasker.hh:397:5 (pdns_recursor+0x5f04b5)
      #15 void std::__invoke_impl<void, MTasker<std::shared_ptr<PacketID>, std::vector<unsigned char, noinit_adaptor<std::allocator<unsigned char> > >, PacketIDCompare>::makeThread(void (*)(void*), void*)::'lambda'()&>(std::__invoke_other, MTasker<std::shared_ptr<PacketID>, std::vector<unsigned char, noinit_adaptor<std::allocator<unsigned char> > >, PacketIDCompare>::makeThread(void (*)(void*), void*)::'lambda'()&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (pdns_recursor+0x5f0191)
      #16 std::enable_if<is_invocable_r_v<void, MTasker<std::shared_ptr<PacketID>, std::vector<unsigned char, noinit_adaptor<std::allocator<unsigned char> > >, PacketIDCompare>::makeThread(void (*)(void*), void*)::'lambda'()&>, void>::type std::__invoke_r<void, MTasker<std::shared_ptr<PacketID>, std::vector<unsigned char, noinit_adaptor<std::allocator<unsigned char> > >, PacketIDCompare>::makeThread(void (*)(void*), void*)::'lambda'()&>(MTasker<std::shared_ptr<PacketID>, std::vector<unsigned char, noinit_adaptor<std::allocator<unsigned char> > >, PacketIDCompare>::makeThread(void (*)(void*), void*)::'lambda'()&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (pdns_recursor+0x5f0191)
      #17 std::_Function_handler<void (), MTasker<std::shared_ptr<PacketID>, std::vector<unsigned char, noinit_adaptor<std::allocator<unsigned char> > >, PacketIDCompare>::makeThread(void (*)(void*), void*)::'lambda'()>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (pdns_recursor+0x5f0191)
      #18 std::function<void ()>::operator()() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (pdns_recursor+0x591fdf)
      #19 threadWrapper(boost::context::detail::transfer_t) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/mtasker_context.cc:163:7 (pdns_recursor+0x591fdf)
      #20 MTasker<std::shared_ptr<PacketID>, std::vector<unsigned char, noinit_adaptor<std::allocator<unsigned char> > >, PacketIDCompare>::schedule(timeval const&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/./mtasker.hh:426:7 (pdns_recursor+0x6ade0b)
      #21 recLoop() /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2764:29 (pdns_recursor+0x666577)
      #22 recursorThread() /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2959:5 (pdns_recursor+0x666577)
      #23 recLoop() /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2773:24 (pdns_recursor+0x66664d)
      #24 recursorThread() /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2959:5 (pdns_recursor+0x66664d)
      #25 recLoop() /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2806:26 (pdns_recursor+0x668385)
      #26 recursorThread() /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2959:5 (pdns_recursor+0x668385)
      #27 RecThreadInfo::start(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<unsigned int, std::set<int, std::less<int>, std::allocator<int> >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::set<int, std::less<int>, std::allocator<int> > > > > const&, std::shared_ptr<Logr::Logger> const&)::$_0::operator()() const /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:241:5 (pdns_recursor+0x69caf7)
      #28 void std::__invoke_impl<void, RecThreadInfo::start(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<unsigned int, std::set<int, std::less<int>, std::allocator<int> >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::set<int, std::less<int>, std::allocator<int> > > > > const&, std::shared_ptr<Logr::Logger> const&)::$_0>(std::__invoke_other, RecThreadInfo::start(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<unsigned int, std::set<int, std::less<int>, std::allocator<int> >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::set<int, std::less<int>, std::allocator<int> > > > > const&, std::shared_ptr<Logr::Logger> const&)::$_0&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (pdns_recursor+0x69caf7)
      #29 std::__invoke_result<RecThreadInfo::start(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<unsigned int, std::set<int, std::less<int>, std::allocator<int> >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::set<int, std::less<int>, std::allocator<int> > > > > const&, std::shared_ptr<Logr::Logger> const&)::$_0>::type std::__invoke<RecThreadInfo::start(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<unsigned int, std::set<int, std::less<int>, std::allocator<int> >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::set<int, std::less<int>, std::allocator<int> > > > > const&, std::shared_ptr<Logr::Logger> const&)::$_0>(RecThreadInfo::start(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<unsigned int, std::set<int, std::less<int>, std::allocator<int> >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::set<int, std::less<int>, std::allocator<int> > > > > const&, std::shared_ptr<Logr::Logger> const&)::$_0&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:96:14 (pdns_recursor+0x69caf7)
      #30 void std::thread::_Invoker<std::tuple<RecThreadInfo::start(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<unsigned int, std::set<int, std::less<int>, std::allocator<int> >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::set<int, std::less<int>, std::allocator<int> > > > > const&, std::shared_ptr<Logr::Logger> const&)::$_0> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:252:13 (pdns_recursor+0x69caf7)
      #31 std::thread::_Invoker<std::tuple<RecThreadInfo::start(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<unsigned int, std::set<int, std::less<int>, std::allocator<int> >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::set<int, std::less<int>, std::allocator<int> > > > > const&, std::shared_ptr<Logr::Logger> const&)::$_0> >::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:259:11 (pdns_recursor+0x69caf7)
      #32 std::thread::_State_impl<std::thread::_Invoker<std::tuple<RecThreadInfo::start(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<unsigned int, std::set<int, std::less<int>, std::allocator<int> >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::set<int, std::less<int>, std::allocator<int> > > > > const&, std::shared_ptr<Logr::Logger> const&)::$_0> > >::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_thread.h:210:13 (pdns_recursor+0x69caf7)
      #33 <null> <null> (libstdc++.so.6+0xd44a2)

    Previous read of size 4 at 0x55f19579db54 by thread T6:
      #0 getAllStatsMap[abi:cxx11](StatComponent) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec_channel_rec.cc:231:101 (pdns_recursor+0x760f2e)
      #1 productServerStatisticsFetch(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<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, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/ws-recursor.cc:55:16 (pdns_recursor+0x8fcd70)
      #2 apiServerStatistics(HttpRequest*, HttpResponse*) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/ws-api.cc:189:3 (pdns_recursor+0x8f5f71)
      #3 void std::__invoke_impl<void, void (*&)(HttpRequest*, HttpResponse*), HttpRequest*, HttpResponse*>(std::__invoke_other, void (*&)(HttpRequest*, HttpResponse*), HttpRequest*&&, HttpResponse*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14 (pdns_recursor+0x918cc8)
      #4 std::enable_if<is_invocable_r_v<void, void (*&)(HttpRequest*, HttpResponse*), HttpRequest*, HttpResponse*>, void>::type std::__invoke_r<void, void (*&)(HttpRequest*, HttpResponse*), HttpRequest*, HttpResponse*>(void (*&)(HttpRequest*, HttpResponse*), HttpRequest*&&, HttpResponse*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2 (pdns_recursor+0x918cc8)
      #5 std::_Function_handler<void (HttpRequest*, HttpResponse*), void (*)(HttpRequest*, HttpResponse*)>::_M_invoke(std::_Any_data const&, HttpRequest*&&, HttpResponse*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9 (pdns_recursor+0x918cc8)
      #6 std::function<void (HttpRequest*, HttpResponse*)>::operator()(HttpRequest*, HttpResponse*) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9 (pdns_recursor+0x8ff173)
      #7 rustWrapper(std::function<void (HttpRequest*, HttpResponse*)> const&, pdns::rust::web::rec::Request const&, pdns::rust::web::rec::Response&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/ws-recursor.cc:1067:5 (pdns_recursor+0x8ff173)
      #8 pdns::rust::web::rec::apiServerStatistics(pdns::rust::web::rec::Request const&, pdns::rust::web::rec::Response&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/ws-recursor.cc:1102:1 (pdns_recursor+0x907b80)
      #9 pdns$rust$web$rec$cxxbridge1$apiServerStatistics <null> (pdns_recursor+0x9984b2)

    Location is global 'g_security_status' of size 4 at 0x55f19579db54 (pdns_recursor+0x000004479b54)

    Thread T5 'rec/web+stat' (tid=2012, running) created by main thread at:
      #0 pthread_create <null> (pdns_recursor+0x1fe42d)
      #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xd4578)
      #2 RecThreadInfo::runThreads(std::shared_ptr<Logr::Logger> const&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:355:10 (pdns_recursor+0x663382)
      #3 serviceMain(std::shared_ptr<Logr::Logger> const&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2402:9 (pdns_recursor+0x67fdaf)
      #4 main /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:3316:11 (pdns_recursor+0x678755)

    Thread T6 (tid=2013, running) created by main thread at:
      #0 pthread_create <null> (pdns_recursor+0x1fe42d)
      #1 std::sys::pal::unix::thread::Thread::new::he1793c71df66b318 /rustc/e71f9a9a98b0faf423844bf0ba7438f29dc27d58/library/std/src/sys/pal/unix/thread.rs:84:19 (pdns_recursor+0xc1ef11)
      #2 RecThreadInfo::runThreads(std::shared_ptr<Logr::Logger> const&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:358:7 (pdns_recursor+0x663417)
      #3 serviceMain(std::shared_ptr<Logr::Logger> const&) /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:2402:9 (pdns_recursor+0x67fdaf)
      #4 main /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/rec-main.cc:3316:11 (pdns_recursor+0x678755)

  SUMMARY: ThreadSanitizer: data race /__w/pdns/pdns/pdns/recursordist/pdns-recursor-0.0.0-git1/secpoll-recursor.cc:84:23 in doSecPoll(long*, std::shared_ptr<Logr::Logger> const&)
```
This commit switches to an atomic type to store the security polling
status and clarify that the security polling message is not actually
shared outside of the security polling function.
It appears that the security polling status was the last metric stored
in a `uint32_t` type so we can get rid of some now unused code in the
process.

5 months agorec: document file extension of zone forward file and do not accept empty list of... 15194/head
Otto Moerbeek [Tue, 11 Feb 2025 14:42:54 +0000 (15:42 +0100)] 
rec: document file extension of zone forward file and do not accept empty list of forwards

The YAML code already disallows an empty forwarders list. The added
case mainly covers the case when an old-style forward file is parsed
as if it's YAML. This now generated an error:

Feb 21 09:57:39 msg="Fatal error" error="empty list of forwarders for domain '- zone: example.com\"on line 1 of tmp/f.conf" subsystem="config" level="0" prio="Critical" tid="0" ts="1740128259.137" exception="PDNSException"

This hopefully makes admins realize rec is trying to parse YAML
content, but is expecting old-style as the file does not end in
in .yml.

5 months agorec: update umbrella top million URLs 15193/head
Otto Moerbeek [Fri, 21 Feb 2025 08:38:12 +0000 (09:38 +0100)] 
rec: update umbrella top million URLs

After suggestion by @mnordhoff in IRC

5 months agoAdd two missing includes 15192/head
Otto Moerbeek [Fri, 21 Feb 2025 08:34:15 +0000 (09:34 +0100)] 
Add two missing includes

Fixes #15179

5 months agoMerge pull request #15190 from jsoref/dnssec-migration
Miod Vallat [Fri, 21 Feb 2025 07:18:01 +0000 (08:18 +0100)] 
Merge pull request #15190 from jsoref/dnssec-migration

docs: DNSSEC migration

5 months agoMerge pull request #15191 from jsoref/doc-pdnsutil
Miod Vallat [Fri, 21 Feb 2025 06:05:00 +0000 (07:05 +0100)] 
Merge pull request #15191 from jsoref/doc-pdnsutil

docs: link to doc:pdnsutil

5 months agoMerge pull request #15189 from jsoref/lua-if-first-run
Miod Vallat [Fri, 21 Feb 2025 06:03:39 +0000 (07:03 +0100)] 
Merge pull request #15189 from jsoref/lua-if-first-run

docs: lua warn about first run checks

5 months agoMerge pull request #15188 from jsoref/lua-link-to-ifurlup-options
Miod Vallat [Fri, 21 Feb 2025 06:01:20 +0000 (07:01 +0100)] 
Merge pull request #15188 from jsoref/lua-link-to-ifurlup-options

docs: lua link to ifurlup-options

5 months agodocs: link to doc:pdnsutil 15191/head
Josh Soref [Thu, 20 Feb 2025 22:01:40 +0000 (17:01 -0500)] 
docs: link to doc:pdnsutil

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
5 months agodocs: dnssec migration use rst mark up 15190/head
Josh Soref [Thu, 20 Feb 2025 21:24:24 +0000 (16:24 -0500)] 
docs: dnssec migration use rst mark up

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
5 months agodocs: dnssec migration use rst mark up and change wording
Josh Soref [Thu, 20 Feb 2025 21:23:45 +0000 (16:23 -0500)] 
docs: dnssec migration use rst mark up and change wording

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
5 months agodocs: lua warn about first run checks 15189/head
Josh Soref [Thu, 20 Feb 2025 20:58:50 +0000 (15:58 -0500)] 
docs: lua warn about first run checks

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
5 months agodocs: lua link to ifurlup-options 15188/head
Josh Soref [Thu, 20 Feb 2025 20:55:01 +0000 (15:55 -0500)] 
docs: lua link to ifurlup-options

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
5 months agodocs: reinstate artifact generation for PRs 15187/head
Peter van Dijk [Thu, 20 Feb 2025 18:46:49 +0000 (19:46 +0100)] 
docs: reinstate artifact generation for PRs

5 months agodocs: Update to primary/secondary
Josh Soref [Thu, 20 Feb 2025 16:44:09 +0000 (11:44 -0500)] 
docs: Update to primary/secondary

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
5 months agoMerge pull request #15180 from miodvallat/consistent_logs
Miod Vallat [Thu, 20 Feb 2025 11:01:09 +0000 (12:01 +0100)] 
Merge pull request #15180 from miodvallat/consistent_logs

Consistent spelling of "Lua record" in logs

5 months agoMore LUA -> Lua when applicable. 15180/head
Miod Vallat [Thu, 20 Feb 2025 08:49:31 +0000 (09:49 +0100)] 
More LUA -> Lua when applicable.

5 months agoMerge pull request #15177 from jsoref/lua-records-mark-up
Miod Vallat [Thu, 20 Feb 2025 06:50:04 +0000 (07:50 +0100)] 
Merge pull request #15177 from jsoref/lua-records-mark-up

Mark up www and ip addresses

5 months agoConsistent spelling of "Lua record" in logs.
Miod Vallat [Thu, 20 Feb 2025 06:39:26 +0000 (07:39 +0100)] 
Consistent spelling of "Lua record" in logs.

5 months agoMerge pull request #15178 from jsoref/tsig-mark-up
Miod Vallat [Thu, 20 Feb 2025 06:34:26 +0000 (07:34 +0100)] 
Merge pull request #15178 from jsoref/tsig-mark-up

Mark up tsig tables/algorithms/lengths

5 months agoMark up www and ip addresses 15177/head
Josh Soref [Wed, 19 Feb 2025 20:53:05 +0000 (15:53 -0500)] 
Mark up www and ip addresses

5 months agoMark up tsig tables/algorithms/lengths 15178/head
Josh Soref [Wed, 19 Feb 2025 21:35:35 +0000 (16:35 -0500)] 
Mark up tsig tables/algorithms/lengths

5 months agoMerge pull request #15165 from rgacogne/update-quiche
Remi Gacogne [Wed, 19 Feb 2025 15:43:11 +0000 (16:43 +0100)] 
Merge pull request #15165 from rgacogne/update-quiche

dnsdist: Update Quiche to 0.23.2 in our packages

5 months agoMerge pull request #15164 from rgacogne/update-rust
Remi Gacogne [Wed, 19 Feb 2025 15:42:58 +0000 (16:42 +0100)] 
Merge pull request #15164 from rgacogne/update-rust

Update Rust to 1.84.1 for our packages

5 months agoMerge pull request #15175 from miodvallat/lmdb_abort_with_style
Miod Vallat [Wed, 19 Feb 2025 10:02:04 +0000 (11:02 +0100)] 
Merge pull request #15175 from miodvallat/lmdb_abort_with_style

Improve LMDBBackend reliability

5 months agolmdb: be sure to abort pending transactions in the correct order. 15175/head
Miod Vallat [Wed, 19 Feb 2025 08:54:43 +0000 (09:54 +0100)] 
lmdb: be sure to abort pending transactions in the correct order.

If the LMDBBackend destructor is invoked while there are still pending
transactions, these need to be aborted, but in the reverse order of
their creation (i.e. abort the innermost transaction first).

The default destructor would abort them in a class field
declaration-dependent order, which may not match the actual cinematic.

We now remember which transaction is the innermost one, so that we can
abort them in the expected order.

This gets rid of "double free or corruption (top)" aborts with glibc,
and Address Sanitizer errors.

5 months agoMerge pull request #15156 from rgacogne/ddist-handle-dnstap-msg-order
Remi Gacogne [Mon, 17 Feb 2025 16:10:58 +0000 (17:10 +0100)] 
Merge pull request #15156 from rgacogne/ddist-handle-dnstap-msg-order

dnsdist: Handle response dnstap messages arriving before the query ones

5 months agodnsdist: Put the dnstap messages back to the queue in the correct order 15156/head
Remi Gacogne [Mon, 17 Feb 2025 10:29:49 +0000 (11:29 +0100)] 
dnsdist: Put the dnstap messages back to the queue in the correct order

As noticed by Miod, the previous solution was not removing all messages
from the queue, possibly putting back old messages behind newer ones.

5 months agoMerge pull request #15168 from omoerbeek/rec-coverity-20250217
Otto Moerbeek [Mon, 17 Feb 2025 10:26:15 +0000 (11:26 +0100)] 
Merge pull request #15168 from omoerbeek/rec-coverity-20250217

rec: coverity 20250217

5 months agoMerge pull request #15163 from rgacogne/dnsdist-meson-dist
Remi Gacogne [Mon, 17 Feb 2025 09:27:17 +0000 (10:27 +0100)] 
Merge pull request #15163 from rgacogne/dnsdist-meson-dist

dnsdist: Generate tarballs via `meson dist`

5 months agoFix typos found by Miod in gen-version 15163/head
Remi Gacogne [Mon, 17 Feb 2025 08:39:29 +0000 (09:39 +0100)] 
Fix typos found by Miod in gen-version

5 months agoThis should eliminate a dozen or so Coverity warnigs 15168/head
Otto Moerbeek [Mon, 17 Feb 2025 08:15:34 +0000 (09:15 +0100)] 
This should eliminate a dozen or so Coverity warnigs

For example:

1591605 Data race condition

5. missing_lock: Accessing g_lowercaseOutgoing without holding lock LockGuarded<std::shared_ptr<std::unordered_map<DNSName, SyncRes::AuthDomain, std::hash<DNSName>, std::equal_to<DNSName>, std::allocator<std::pair<DNSName const, SyncRes::AuthDomain> > > > >.d_mutex. Elsewhere, g_lowercaseOutgoing is written to with LockGuarded.d_mutex held 1 out of 1 times.

5 months agoCoverity 1591604 Use of auto that causes a copy
Otto Moerbeek [Mon, 17 Feb 2025 08:05:16 +0000 (09:05 +0100)] 
Coverity 1591604 Use of auto that causes a copy

5 months agoMerge pull request #15166 from rgacogne/ddist-unused-warnings
Remi Gacogne [Sat, 15 Feb 2025 12:31:57 +0000 (13:31 +0100)] 
Merge pull request #15166 from rgacogne/ddist-unused-warnings

dnsdist: Fix several unused parameter warnings without DoH support

5 months agoRust moved to XZ compression 15164/head
Remi Gacogne [Fri, 14 Feb 2025 15:51:37 +0000 (16:51 +0100)] 
Rust moved to XZ compression

5 months agodnsdist: Fix several unused parameter warnings without DoH support 15166/head
Remi Gacogne [Fri, 14 Feb 2025 15:42:37 +0000 (16:42 +0100)] 
dnsdist: Fix several unused parameter warnings without DoH support

5 months agodnsdist: Update Quiche to 0.23.2 in our packages 15165/head
Remi Gacogne [Fri, 14 Feb 2025 15:40:10 +0000 (16:40 +0100)] 
dnsdist: Update Quiche to 0.23.2 in our packages

5 months agoUpdate Rust to 1.84.1 for our packages
Remi Gacogne [Fri, 14 Feb 2025 15:38:33 +0000 (16:38 +0100)] 
Update Rust to 1.84.1 for our packages

5 months agoMerge pull request #15160 from miodvallat/amnesia_got_me_in_trouble
Miod Vallat [Fri, 14 Feb 2025 15:16:01 +0000 (16:16 +0100)] 
Merge pull request #15160 from miodvallat/amnesia_got_me_in_trouble

[pdnsutil] Better error message when disk full

5 months agoMerge pull request #14905 from klaus-nicat/improve_freshness-check_description
Miod Vallat [Fri, 14 Feb 2025 14:11:55 +0000 (15:11 +0100)] 
Merge pull request #14905 from klaus-nicat/improve_freshness-check_description

Try to improve freshness-check description

5 months agoMerge pull request #15161 from omoerbeek/rec-meson-install
Otto Moerbeek [Fri, 14 Feb 2025 13:59:27 +0000 (14:59 +0100)] 
Merge pull request #15161 from omoerbeek/rec-meson-install

rec: add meson install target and fix meson dist issues after new way of generating man pages was merged

5 months agodnsdist: Only generate man pages when needed w/ meson
Remi Gacogne [Fri, 14 Feb 2025 13:32:52 +0000 (14:32 +0100)] 
dnsdist: Only generate man pages when needed w/ meson

Thanks, Otto!

5 months agodnsdist: Generate tarballs via `meson dist`
Remi Gacogne [Fri, 14 Feb 2025 10:37:00 +0000 (11:37 +0100)] 
dnsdist: Generate tarballs via `meson dist`

5 months agoApply suggestions from code review 14905/head
Miod Vallat [Fri, 14 Feb 2025 13:02:27 +0000 (14:02 +0100)] 
Apply suggestions from code review

5 months agoMerge pull request #15162 from Habbie/revert-rclone
Peter van Dijk [Fri, 14 Feb 2025 12:13:41 +0000 (13:13 +0100)] 
Merge pull request #15162 from Habbie/revert-rclone

revert from rclone back to custom sync script

5 months agorevert from rclone back to custom sync script 15162/head
Peter van Dijk [Fri, 14 Feb 2025 12:11:04 +0000 (13:11 +0100)] 
revert from rclone back to custom sync script

5 months agoMerge pull request #15155 from milzi234/feature/rclone
Peter van Dijk [Fri, 14 Feb 2025 11:28:25 +0000 (12:28 +0100)] 
Merge pull request #15155 from milzi234/feature/rclone

Use rclone instead of custom sync script to publish documentation to AWS S3 bucket

5 months agoDon't set --config-dir when generating dist config, no need to anymore 15161/head
Otto Moerbeek [Fri, 14 Feb 2025 11:21:53 +0000 (12:21 +0100)] 
Don't set --config-dir when generating dist config, no need to anymore

5 months agoMerge pull request #15152 from miodvallat/strict_aliasing
Miod Vallat [Fri, 14 Feb 2025 11:15:47 +0000 (12:15 +0100)] 
Merge pull request #15152 from miodvallat/strict_aliasing

Make the record representation of ALIAS match CNAME

5 months agoFix meson dist issues found after new way of generating man pages was merged.
Otto Moerbeek [Fri, 14 Feb 2025 10:58:12 +0000 (11:58 +0100)] 
Fix meson dist issues found after new way of generating man pages was merged.

Including a path fix to the cmp command, which wrongly assumes
MESON_SOURCE_ROOT was the toplevel dir.

5 months agoMerge pull request #15157 from omoerbeek/rec-coverity-20250212
Otto Moerbeek [Fri, 14 Feb 2025 11:08:10 +0000 (12:08 +0100)] 
Merge pull request #15157 from omoerbeek/rec-coverity-20250212

rec: coverity 20250212

5 months agoMerge pull request #15159 from zeha/zeha-mesonstuff
Miod Vallat [Fri, 14 Feb 2025 10:53:42 +0000 (11:53 +0100)] 
Merge pull request #15159 from zeha/zeha-mesonstuff

recursor/meson: fix typo in comment

5 months agoIf deleteZone fails due to a backend exception, show it... 15160/head
Miod Vallat [Fri, 14 Feb 2025 10:50:40 +0000 (11:50 +0100)] 
If deleteZone fails due to a backend exception, show it...

...rather than any further backend exception caused by
abortTransaction(), which will be much less helpful.

Using the sqlite backend on a full filesystem, pdnsutil delete-zone now
correctly reports "database or disk is full" instead of "cannot rollback
- no transaction is active" which no human can make sense of in this
situation.

5 months agorecursor/meson: fix typo in comment 15159/head
Chris Hofstaedtler [Fri, 14 Feb 2025 10:19:59 +0000 (11:19 +0100)] 
recursor/meson: fix typo in comment

5 months agoAdd misssing declaration gcc likes while there 15157/head
Otto Moerbeek [Fri, 14 Feb 2025 09:43:36 +0000 (10:43 +0100)] 
Add misssing declaration gcc likes while there

5 months agorec: add install target to meson
Otto Moerbeek [Wed, 12 Feb 2025 15:03:46 +0000 (16:03 +0100)] 
rec: add install target to meson

And always generate default config in YAML format

5 months agoremove --progress 15155/head
milzi234 [Fri, 14 Feb 2025 09:46:02 +0000 (10:46 +0100)] 
remove --progress

5 months agouse ubuntu's rclone
milzi234 [Fri, 14 Feb 2025 09:44:17 +0000 (10:44 +0100)] 
use ubuntu's rclone

5 months agoCoverity 1591086 Uninitialized scalar field
Otto Moerbeek [Wed, 12 Feb 2025 13:26:24 +0000 (14:26 +0100)] 
Coverity 1591086 Uninitialized scalar field

5 months agoBuch of Coverity "Variable copied when it could be moved" cases
Otto Moerbeek [Wed, 12 Feb 2025 13:07:51 +0000 (14:07 +0100)] 
Buch of Coverity "Variable copied when it could be moved" cases

5 months agoMerge pull request #15154 from omoerbeek/rec-rust-cxx-include-dir
Otto Moerbeek [Fri, 14 Feb 2025 09:29:13 +0000 (10:29 +0100)] 
Merge pull request #15154 from omoerbeek/rec-rust-cxx-include-dir

rec: fix cxx include dir

5 months agoUse rclone instead of custom sync script to publish documentation to AWS S3 bucket
milzi234 [Fri, 14 Feb 2025 09:07:03 +0000 (10:07 +0100)] 
Use rclone instead of custom sync script to publish documentation to AWS S3 bucket

5 months agoMerge pull request #15153 from omoerbeek/rec-fix-docs-gen
Otto Moerbeek [Fri, 14 Feb 2025 08:44:34 +0000 (09:44 +0100)] 
Merge pull request #15153 from omoerbeek/rec-fix-docs-gen

rec: fix docs generating, settings/ is now rec-rust-lib/

5 months agorec: fix cxx include dir 15154/head
Otto Moerbeek [Fri, 14 Feb 2025 08:23:23 +0000 (09:23 +0100)] 
rec: fix cxx include dir

5 months agorec: fix docs generating, settings/ is now rec-rust-lib/ 15153/head
Otto Moerbeek [Fri, 14 Feb 2025 07:53:01 +0000 (08:53 +0100)] 
rec: fix docs generating, settings/ is now rec-rust-lib/

5 months agoMerge pull request #15114 from omoerbeek/rec-rust-web
Otto Moerbeek [Fri, 14 Feb 2025 07:30:41 +0000 (08:30 +0100)] 
Merge pull request #15114 from omoerbeek/rec-rust-web

rec: move to embedded web service written in Rust

5 months agoMerge pull request #14976 from omoerbeek/rec-quit-nicely-sync
Otto Moerbeek [Fri, 14 Feb 2025 07:28:02 +0000 (08:28 +0100)] 
Merge pull request #14976 from omoerbeek/rec-quit-nicely-sync

rec: make quit-nicely wait on actual quit and start using it for stopping by systemd

5 months agoMake the record representation of ALIAS match CNAME... 15152/head
Miod Vallat [Thu, 13 Feb 2025 16:15:34 +0000 (17:15 +0100)] 
Make the record representation of ALIAS match CNAME...

...but for the name compression. This will correctly remove non-root
trailing dots from ALIAS records.

Fixes #5500, #7827

5 months agoTypo in comment 14976/head
Otto Moerbeek [Fri, 14 Feb 2025 06:57:25 +0000 (07:57 +0100)] 
Typo in comment

Co-authored-by: Miod Vallat <miod.vallat@open-xchange.com>