]> git.ipfire.org Git - thirdparty/pdns.git/log
thirdparty/pdns.git
5 days agodnsdist: Add OpenSSL >= 4.0.0 compatibility 17484/head
Remi Gacogne [Fri, 29 May 2026 15:00:52 +0000 (17:00 +0200)] 
dnsdist: Add OpenSSL >= 4.0.0 compatibility

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
5 days agoMerge pull request #17485 from pieterlexis/dnsdist-image-build-fix
Remi Gacogne [Mon, 1 Jun 2026 13:17:29 +0000 (15:17 +0200)] 
Merge pull request #17485 from pieterlexis/dnsdist-image-build-fix

dnsdist: Remove autotool remants from Docker image build

5 days agoMerge pull request #17359 from omoerbeek/rec-rust-gen-janitor
Otto Moerbeek [Mon, 1 Jun 2026 12:20:16 +0000 (14:20 +0200)] 
Merge pull request #17359 from omoerbeek/rec-rust-gen-janitor

rec: janitor work on (generated) Rust code

5 days agorec: janitor work on (generated) Rust code 17359/head
Otto Moerbeek [Wed, 13 May 2026 14:07:38 +0000 (16:07 +0200)] 
rec: janitor work on (generated) Rust code

Signed-off-by: Otto Moerbeek <otto.moerbeek@open-xchange.com>
5 days agoMerge pull request #17491 from miodvallat/summer_is_coming
Miod Vallat [Mon, 1 Jun 2026 10:30:11 +0000 (12:30 +0200)] 
Merge pull request #17491 from miodvallat/summer_is_coming

auth: hide serial numbers in test oracles

5 days agoMerge pull request #17490 from rgacogne/update-remotebackend-python-requirements
Remi Gacogne [Mon, 1 Jun 2026 10:06:20 +0000 (12:06 +0200)] 
Merge pull request #17490 from rgacogne/update-remotebackend-python-requirements

Update Python requirements in modules/remotebackend

5 days agoMerge pull request #17483 from Habbie/resolute-builds
Remi Gacogne [Mon, 1 Jun 2026 09:57:42 +0000 (11:57 +0200)] 
Merge pull request #17483 from Habbie/resolute-builds

github package building workflows: add ubuntu-resolute

5 days agoHide serial numbers in test oracles. 17491/head
Miod Vallat [Mon, 1 Jun 2026 09:55:14 +0000 (11:55 +0200)] 
Hide serial numbers in test oracles.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
5 days agoUpdate Python requirements in modules/remotebackend 17490/head
Remi Gacogne [Mon, 1 Jun 2026 09:16:42 +0000 (11:16 +0200)] 
Update Python requirements in modules/remotebackend

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
5 days agodnsdist: Remove autotool remants from Docker image build 17485/head
Pieter Lexis [Mon, 1 Jun 2026 08:56:59 +0000 (10:56 +0200)] 
dnsdist: Remove autotool remants from Docker image build

5 days agoMerge pull request #17099 from Annih/issue17036_dnsdist_optin_fatal_bind_failures
Remi Gacogne [Mon, 1 Jun 2026 08:42:48 +0000 (10:42 +0200)] 
Merge pull request #17099 from Annih/issue17036_dnsdist_optin_fatal_bind_failures

dnsdist: add opt-in fatal bind failures for console and webserver

5 days agoMerge pull request #17479 from rgacogne/ddist-update-quiche-0.29.1
Remi Gacogne [Mon, 1 Jun 2026 07:46:57 +0000 (09:46 +0200)] 
Merge pull request #17479 from rgacogne/ddist-update-quiche-0.29.1

dnsdist: Update Quiche to 0.29.1 in our packages

7 days agoMerge pull request #17355 from miodvallat/porcupine_tree
Miod Vallat [Sat, 30 May 2026 20:57:49 +0000 (22:57 +0200)] 
Merge pull request #17355 from miodvallat/porcupine_tree

auth: skip zone cache refresh logic if disabled

7 days agoMerge pull request #16389 from miodvallat/vigil
Peter van Dijk [Sat, 30 May 2026 19:41:30 +0000 (21:41 +0200)] 
Merge pull request #16389 from miodvallat/vigil

auth Lua health checks: more responsiveness

7 days agoMerge pull request #17304 from miodvallat/ersandman
Peter van Dijk [Sat, 30 May 2026 19:32:52 +0000 (21:32 +0200)] 
Merge pull request #17304 from miodvallat/ersandman

auth lmdb: yet another NSEC bug

8 days agogithub package building workflows: add ubuntu-resolute 17483/head
Peter van Dijk [Fri, 29 May 2026 12:23:51 +0000 (14:23 +0200)] 
github package building workflows: add ubuntu-resolute

Signed-off-by: Peter van Dijk <peter.van.dijk@powerdns.com>
8 days agoMerge pull request #16986 from Habbie/ubuntu-resolute
Peter van Dijk [Fri, 29 May 2026 12:20:58 +0000 (14:20 +0200)] 
Merge pull request #16986 from Habbie/ubuntu-resolute

add ubuntu-resolute build target

8 days agoMerge pull request #17482 from Habbie/alpine-3.23
Peter van Dijk [Fri, 29 May 2026 12:07:15 +0000 (14:07 +0200)] 
Merge pull request #17482 from Habbie/alpine-3.23

bump alpine version for sdist stage to 3.23

8 days agoMerge pull request #17481 from Habbie/meson-1.11.1
Peter van Dijk [Fri, 29 May 2026 12:06:55 +0000 (14:06 +0200)] 
Merge pull request #17481 from Habbie/meson-1.11.1

bump meson to 1.11.1

8 days agobump alpine version for sdist stage to 3.23 17482/head
Peter van Dijk [Fri, 29 May 2026 10:52:28 +0000 (12:52 +0200)] 
bump alpine version for sdist stage to 3.23

Signed-off-by: Peter van Dijk <peter.van.dijk@powerdns.com>
8 days agobump meson to 1.11.1 17481/head
Peter van Dijk [Fri, 29 May 2026 10:50:31 +0000 (12:50 +0200)] 
bump meson to 1.11.1

Signed-off-by: Peter van Dijk <peter.van.dijk@powerdns.com>
8 days agoadd ubuntu-resolute build target 16986/head
Peter van Dijk [Mon, 16 Mar 2026 13:08:30 +0000 (14:08 +0100)] 
add ubuntu-resolute build target

drop usrmerge

8 days agodnsdist debian deps: replace boost-all with more specific list
Peter van Dijk [Mon, 16 Mar 2026 14:34:02 +0000 (15:34 +0100)] 
dnsdist debian deps: replace boost-all with more specific list

* on ubuntu 26.04 and (currently) debian sid, pulling libboost-all-dev
  pulls in, a few dependencies deeper, via mpi and fortran, gcc-16,
  but not libstdc++-16-dev
* clang then no longer can find libstdc++

fix: stop using boost-all-dev

* for meson to detect the boost dynamic libraries correctly, a boost
  dynamic library with a name that sorts before 'exception' needs to
  be present on the system.

hack: add libboost-container-dev (could also have picked chrono)

Discussion in https://github.com/mesonbuild/meson/issues/15858

8 days agodnsdist: Update Quiche to 0.29.1 in our packages 17479/head
Remi Gacogne [Fri, 29 May 2026 09:11:31 +0000 (11:11 +0200)] 
dnsdist: Update Quiche to 0.29.1 in our packages

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
8 days agoMerge pull request #17010 from pieterlexis/dnsdist-rm-autotool
Remi Gacogne [Fri, 29 May 2026 07:00:52 +0000 (09:00 +0200)] 
Merge pull request #17010 from pieterlexis/dnsdist-rm-autotool

dnsdist: Remove autotools

9 days agodnsdist: add opt-in fatal bind failures for console and webserver 17099/head
b.courtois [Tue, 31 Mar 2026 20:06:01 +0000 (22:06 +0200)] 
dnsdist: add opt-in fatal bind failures for console and webserver

Introduce opt-in fatal behavior when binding the webserver socket or
the control socket fails, to make startup failures visible to service
managers like systemd.
Expose the feature in both configuration styles:
- Lua: setConsoleBindFatal(bool), setWebserverBindFatal(bool)
- YAML: console.bind_fatal, webserver.bind_fatal

When enabled, dnsdist now exits with failure on bind exceptions for:
- control socket listeners
- webserver listeners

Wire the new settings through runtime configuration loading, Lua
configuration items, and YAML parsing, and add console completion
entries for both setters.
Update documentation with new config functions and behavior notes.

Add regression tests in test_BindFatal.py for Lua and YAML, validating:
- default/not set: bind failures are non-fatal
- explicit false: bind failures are non-fatal
- explicit true: bind failures are fatal at startup

Signed-off-by: b.courtois <b.courtois@criteo.com>
9 days agodocs(dnsdist): update autotools/make info 17010/head
Pieter Lexis [Thu, 28 May 2026 11:40:40 +0000 (13:40 +0200)] 
docs(dnsdist): update autotools/make info

9 days agoci: don't build benchmarks in CI
Pieter Lexis [Wed, 27 May 2026 13:12:07 +0000 (15:12 +0200)] 
ci: don't build benchmarks in CI

Catch2 >= 3 is not available in 22.04.

9 days agodnsdist: Simplify handling of fuzzing targets
Remi Gacogne [Tue, 26 May 2026 11:52:09 +0000 (13:52 +0200)] 
dnsdist: Simplify handling of fuzzing targets

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
9 days agoci: Set BUILDER_VERSION during codeql
Pieter Lexis [Mon, 23 Mar 2026 08:59:58 +0000 (09:59 +0100)] 
ci: Set BUILDER_VERSION during codeql

9 days agochore(dnsdist): Add custom target for fuzz-targets
Pieter Lexis [Thu, 19 Mar 2026 13:48:32 +0000 (14:48 +0100)] 
chore(dnsdist): Add custom target for fuzz-targets

9 days agochore(dnsdist): run coverity with meson
Pieter Lexis [Thu, 19 Mar 2026 11:52:08 +0000 (12:52 +0100)] 
chore(dnsdist): run coverity with meson

9 days agochore(dnsdist): remove autotools things from tasks.py
Pieter Lexis [Thu, 19 Mar 2026 11:27:43 +0000 (12:27 +0100)] 
chore(dnsdist): remove autotools things from tasks.py

9 days agochore(dnsdist): no autoreconf during meson dist
Pieter Lexis [Thu, 19 Mar 2026 11:20:23 +0000 (12:20 +0100)] 
chore(dnsdist): no autoreconf during meson dist

9 days agochore(dnsdist): rename dnsdist.service.meson.in to dnsdist.service.in
Pieter Lexis [Thu, 19 Mar 2026 11:18:27 +0000 (12:18 +0100)] 
chore(dnsdist): rename dnsdist.service.meson.in to dnsdist.service.in

9 days agochore(dnsdist): Remove autotools-related files
Pieter Lexis [Thu, 19 Mar 2026 11:17:20 +0000 (12:17 +0100)] 
chore(dnsdist): Remove autotools-related files

9 days agoMerge pull request #16165 from rgacogne/ci-test-release-tarballs-with-meson
Pieter Lexis [Thu, 28 May 2026 12:00:17 +0000 (14:00 +0200)] 
Merge pull request #16165 from rgacogne/ci-test-release-tarballs-with-meson

dnsdist and rec: Prevent generating release tarballs via autotools

9 days agoMerge pull request #17464 from ralight/link-multiple-instances
Pieter Lexis [Thu, 28 May 2026 11:43:02 +0000 (13:43 +0200)] 
Merge pull request #17464 from ralight/link-multiple-instances

Docs: Link backend docs to launch setting

9 days agoMerge pull request #17469 from rgacogne/ddist-pb-tests-timeout
Remi Gacogne [Thu, 28 May 2026 09:56:25 +0000 (11:56 +0200)] 
Merge pull request #17469 from rgacogne/ddist-pb-tests-timeout

dnsdist: Consistently handle slow protobuf messages in our tests

9 days agoMerge pull request #17462 from rgacogne/ddist-make-ot-cheaper
Remi Gacogne [Thu, 28 May 2026 08:55:58 +0000 (10:55 +0200)] 
Merge pull request #17462 from rgacogne/ddist-make-ot-cheaper

dnsdist: Reduce the cost of disabled OpenTelemetry tracing

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>
10 days agoMerge pull request #17358 from miodvallat/verboseview
Peter van Dijk [Wed, 27 May 2026 12:04:17 +0000 (14:04 +0200)] 
Merge pull request #17358 from miodvallat/verboseview

auth: some views traces

11 days agosigh-tidy 17358/head
Miod Vallat [Fri, 15 May 2026 06:04:35 +0000 (08:04 +0200)] 
sigh-tidy

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
11 days agoTweak non-structured logs a bit.
Miod Vallat [Wed, 13 May 2026 12:16:13 +0000 (14:16 +0200)] 
Tweak non-structured logs a bit.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
11 days agoTrace view selection if log-dns-queries.
Miod Vallat [Wed, 13 May 2026 08:06:26 +0000 (10:06 +0200)] 
Trace view selection if log-dns-queries.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
11 days agoauth: allow the zone cache to get a structured logger
Miod Vallat [Wed, 13 May 2026 07:56:55 +0000 (09:56 +0200)] 
auth: allow the zone cache to get a structured logger

Signed-off-by: Miod Vallat <miod.vallat@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>
11 days agoMerge pull request #17460 from rgacogne/nmt-empty
Remi Gacogne [Tue, 26 May 2026 19:11:18 +0000 (21:11 +0200)] 
Merge pull request #17460 from rgacogne/nmt-empty

iputils: Return early when the tree is empty

11 days agoMerge pull request #17468 from rgacogne/ddist-fix-cache-bench
Remi Gacogne [Tue, 26 May 2026 14:56:44 +0000 (16:56 +0200)] 
Merge pull request #17468 from rgacogne/ddist-fix-cache-bench

dnsdist: Fix the packet cache micro-benchmarks

11 days agoMerge pull request #17461 from rgacogne/ddist-fix-muted-frontend
Remi Gacogne [Tue, 26 May 2026 14:07:10 +0000 (16:07 +0200)] 
Merge pull request #17461 from rgacogne/ddist-fix-muted-frontend

dnsdist: Do not send UDP responses when the frontend is muted

11 days agodnsdist: Add a micro-benchmark for the empty NetmaskTree case 17460/head
Remi Gacogne [Tue, 26 May 2026 14:03:05 +0000 (16:03 +0200)] 
dnsdist: Add a micro-benchmark for the empty NetmaskTree case

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
11 days agodnsdist: Fix the packet cache micro-benchmarks 17468/head
Remi Gacogne [Tue, 26 May 2026 13:58:49 +0000 (15:58 +0200)] 
dnsdist: Fix the packet cache micro-benchmarks

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
11 days agoauth: keep the state of log-dns-queries in a global.
Miod Vallat [Wed, 13 May 2026 07:49:26 +0000 (09:49 +0200)] 
auth: keep the state of log-dns-queries in a global.

Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
11 days agodnsdist: Fix weird comment 17462/head
Remi Gacogne [Tue, 26 May 2026 09:57:20 +0000 (11:57 +0200)] 
dnsdist: Fix weird comment

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
11 days agodnsdist: Use a optional to distinguish between "not tested" and "not enabled"
Remi Gacogne [Tue, 26 May 2026 09:44:55 +0000 (11:44 +0200)] 
dnsdist: Use a optional to distinguish between "not tested" and "not enabled"

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
11 days agoMerge pull request #17463 from rgacogne/ddist-lua-offsetof-warnings
Remi Gacogne [Tue, 26 May 2026 08:27:04 +0000 (10:27 +0200)] 
Merge pull request #17463 from rgacogne/ddist-lua-offsetof-warnings

dnsdist: Fix warnings about the use of `offsetof` on non-POD types

11 days agoMerge pull request #17430 from pieterlexis/rec-doc-nearmiss
Pieter Lexis [Tue, 26 May 2026 08:24:35 +0000 (10:24 +0200)] 
Merge pull request #17430 from pieterlexis/rec-doc-nearmiss

docs(rec): describe result of hitting spoof-nearmiss-max in more places

11 days agodnsdist: Move from `d_OTTracingDisabled` to `d_OTTracingEnabled`
Remi Gacogne [Tue, 26 May 2026 08:23:53 +0000 (10:23 +0200)] 
dnsdist: Move from `d_OTTracingDisabled` to `d_OTTracingEnabled`

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoDocs: Link backend docs to launch setting 17464/head
Roger A. Light [Fri, 22 May 2026 20:26:40 +0000 (21:26 +0100)] 
Docs: Link backend docs to launch setting

For a user who has not read the documentation in detail, if they decide
they want to run more multiple pipe backends, for example, then they
will probably go to the pipe backend documentation to discover how to do
this. The docs list the backend as having support for Multiple
Instances, but no information on how to achieve this. Adding a link to
the launch option immediately provides the information that is required.

Signed-off-by: Roger A. Light <roger@atchoo.org>
2 weeks agodnsdist: Fix clang-tidy warnings in dnsdist-opentelemetry.cc
Remi Gacogne [Fri, 22 May 2026 14:24:24 +0000 (16:24 +0200)] 
dnsdist: Fix clang-tidy warnings in dnsdist-opentelemetry.cc

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Fix warnings about the use of `offsetof` on non-POD types 17463/head
Remi Gacogne [Fri, 22 May 2026 13:33:21 +0000 (15:33 +0200)] 
dnsdist: Fix warnings about the use of `offsetof` on non-POD types

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Fix warnings about unused parameters when protobuf support is disabled
Remi Gacogne [Fri, 22 May 2026 13:28:30 +0000 (15:28 +0200)] 
dnsdist: Fix warnings about unused parameters when protobuf support is disabled

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Reduce the cost of disabled OpenTelemetry tracing
Remi Gacogne [Fri, 22 May 2026 12:39:47 +0000 (14:39 +0200)] 
dnsdist: Reduce the cost of disabled OpenTelemetry tracing

This commit:
- prevents the copy of a shared pointer by passing a reference to the tracer
  instead, a copy (incrementing the reference count, then decrementing it later)
  can still be done when needed
- skip checking the runtime configuration to check if OT is enabled if we already
  have a tracer
- adds a boolean to the InternalQueryState to remember whether OT is disabled,
  preventing the need to check the runtime configuration every time we create
  a (most of the time empty) closer

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agoiputils: Return early when the tree is empty
Remi Gacogne [Fri, 22 May 2026 13:08:09 +0000 (15:08 +0200)] 
iputils: Return early when the tree is empty

This brings a small speed-up when the proxy protocol ACL is empty,
for example.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
2 weeks agodnsdist: Do not send UDP responses when the frontend is muted 17461/head
Remi Gacogne [Fri, 22 May 2026 12:44:00 +0000 (14:44 +0200)] 
dnsdist: Do not send UDP responses when the frontend is muted

We were not checking in various places (cache hits, self-answered responses).

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 agoUpdate pdns/recursordist/rec-rust-lib/table.py 17430/head
Pieter Lexis [Wed, 20 May 2026 15:19:26 +0000 (17:19 +0200)] 
Update pdns/recursordist/rec-rust-lib/table.py

Co-authored-by: Remi Gacogne <github@coredump.fr>
Signed-off-by: Pieter Lexis <pieter@plexis.eu>
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>