]>
git.ipfire.org Git - thirdparty/pdns.git/log
Remi Gacogne [Mon, 30 Jun 2025 13:58:07 +0000 (15:58 +0200)]
dnsdist: Lowercase the TLS provider name for YAML-originated backends
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Remi Gacogne [Mon, 30 Jun 2025 13:57:10 +0000 (15:57 +0200)]
dnsdist: Error if backend certificate validation is enabled without a subject name
We can only validate if a proper subject name or subject address is passed,
and we do not want to silently disable validation, so let's refuse to start.
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Miod Vallat [Mon, 30 Jun 2025 14:34:51 +0000 (16:34 +0200)]
Merge pull request #15745 from miodvallat/nsec3_to_deceive
"simple" lmdb code factoring
Miod Vallat [Mon, 30 Jun 2025 14:34:04 +0000 (16:34 +0200)]
Merge pull request #15753 from miodvallat/clever_breakage
Unbreak auth tests
Remi Gacogne [Mon, 30 Jun 2025 13:59:42 +0000 (15:59 +0200)]
Merge pull request #15744 from bagasme/dnsdist-installing-update
dnsdist: Mention compiling with meson
Miod Vallat [Mon, 30 Jun 2025 13:27:19 +0000 (15:27 +0200)]
Fix oracle after merge of #15417.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Otto Moerbeek [Mon, 30 Jun 2025 13:25:13 +0000 (15:25 +0200)]
Merge pull request #15748 from omoerbeek/rec-meson-python-version
rec meson: check python version to be at least 3.8
Miod Vallat [Mon, 30 Jun 2025 12:58:57 +0000 (14:58 +0200)]
Merge pull request #15417 from miodvallat/some_other_afternoon
[tools] Let pdnsutil always setup a SOA-EDIT-API metadata when creating zones
Miod Vallat [Mon, 30 Jun 2025 12:54:14 +0000 (14:54 +0200)]
More logic worth factoring in getBeforeAndAfterNames().
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Mon, 30 Jun 2025 10:53:08 +0000 (12:53 +0200)]
Rewrite the now-deobfuscated logic into two getAfterForward calls.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Otto Moerbeek [Mon, 30 Jun 2025 11:41:04 +0000 (13:41 +0200)]
rec meson: check python version to be at least 3.8
Fixes #15732
Signed-off-by: Otto Moerbeek <otto.moerbeek@open-xchange.com>
Otto Moerbeek [Mon, 30 Jun 2025 11:42:00 +0000 (13:42 +0200)]
Merge pull request #15746 from omoerbeek/rec-fix-sysconf-debian
rec: Fix sysconfdir in debian packages built by meson
Miod Vallat [Mon, 30 Jun 2025 10:24:59 +0000 (12:24 +0200)]
Deobfuscate a loop variable.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Mon, 30 Jun 2025 10:11:10 +0000 (12:11 +0200)]
Factor trailing code of getBeforeAndAfterNamesAbsolute(). NFCI
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Mon, 30 Jun 2025 09:44:53 +0000 (11:44 +0200)]
Remove duplicate assignment.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Otto Moerbeek [Mon, 30 Jun 2025 09:30:38 +0000 (11:30 +0200)]
Merge pull request #15730 from renaudallard/patch-1
rec: Correct zonetocaches settings example
Otto Moerbeek [Mon, 30 Jun 2025 07:54:23 +0000 (09:54 +0200)]
rec: Fix sysconfdir in debian packages built by meson
Signed-off-by: Otto Moerbeek <otto.moerbeek@open-xchange.com>
Bagas Sanjaya [Mon, 30 Jun 2025 04:37:49 +0000 (11:37 +0700)]
dnsdist: Mention compiling with meson
While the installation docs covers building dnsdist with autotools and
GNU make, there is none for meson and ninja. Describe how to do the latter.
Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
Miod Vallat [Mon, 30 Jun 2025 06:58:06 +0000 (08:58 +0200)]
Rewrite some for(;;) loops as while loops. NFC
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Mon, 30 Jun 2025 06:54:29 +0000 (08:54 +0200)]
Factor code checking for a NSEC3 back chain record.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Remi Gacogne [Mon, 30 Jun 2025 07:52:03 +0000 (09:52 +0200)]
Merge pull request #15737 from rgacogne/dnsdist-resolver-same-number-different-ips
dnsdist-resolver: Fix a bug when we get new IPs for a server
Remi Gacogne [Mon, 30 Jun 2025 07:51:26 +0000 (09:51 +0200)]
Merge pull request #15739 from rgacogne/lmdb-safe-getmdbenv-race
lmdb-safe: Fix a small race in `getMDBEnv`
Miod Vallat [Mon, 30 Jun 2025 06:36:02 +0000 (08:36 +0200)]
Factor code responsible for writing matching NSEC3 entries.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Remi Gacogne [Fri, 27 Jun 2025 19:56:55 +0000 (21:56 +0200)]
Merge pull request #15735 from rgacogne/lmdb-safe-scalability
lmdb-safe: Improve the scalability of transaction maps
Remi Gacogne [Fri, 27 Jun 2025 19:55:12 +0000 (21:55 +0200)]
Merge pull request #15738 from rgacogne/ddist-lmdb-use-getmdbenv
dnsdist: Prevent users from opening the same LMDB twice
Remi Gacogne [Fri, 27 Jun 2025 19:54:41 +0000 (21:54 +0200)]
lmdb-safe: Do not use strerror() which is not thread-safe
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Remi Gacogne [Fri, 27 Jun 2025 14:40:38 +0000 (16:40 +0200)]
lmdb-safe: Fix a small race in `getMDBEnv`
I believe there is a small race in the `getMDBEnv`: if the database
file does not exist when we first try to get the file metadata, we
acquire the lock then create a new `MDBEnv` and store it in the map.
But what happens if a different thread created the database between
our first check and the call to `MDBEnv`? I believe we would create
a new environment and override the existing entry in the map, bypassing
the check.
This commit introduces a second check right after acquiring the lock
to prevent that.
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Remi Gacogne [Fri, 27 Jun 2025 14:37:46 +0000 (16:37 +0200)]
dnsdist: Prevent users from opening the same LMDB twice
As noted by Peter: "LMBD requires that database is opened
exactly once per process. Opening multiple times breaks file
locks silently, which leads to corrupting the database."
While I don't expect users to actually do that, we already have
a nice helper function to prevent this mistake in the lmdb-safe
code base, so let's use it.
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Remi Gacogne [Fri, 27 Jun 2025 14:09:18 +0000 (16:09 +0200)]
dnsdist-resolver: Fix a bug when we get new IPs for a server
The `dnsdist-resolver` script regularly checks the IPs corresponding
to a backend `hostname`, and updates our backend accordingly:
- if an IP we previously received vanishes, it removes the backend
corresponding to that IP
- if a new IP shows up, it adds a new backend
The existing code tries to avoid some work by keeping track of the
number of IPs associated to a given server, skipping the comparisons
of recently received IPs to existing ones if the number did not change.
This unfortunately does not work well if we get the same number of IPs
but with different IPs in the set.
This caused some backends to never get removed and stay along as ghosts,
as well as some new IPs to never be picked up.
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Miod Vallat [Fri, 27 Jun 2025 13:35:07 +0000 (15:35 +0200)]
Merge pull request #15727 from miodvallat/spaceships'r'us
Spaceships'r'us
Miod Vallat [Fri, 27 Jun 2025 12:59:41 +0000 (14:59 +0200)]
Add a few comments.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Remi Gacogne [Fri, 27 Jun 2025 10:52:56 +0000 (12:52 +0200)]
Merge pull request #15731 from lucasRolff/master
Add :getQueries() method to Server class
Peter van Dijk [Fri, 27 Jun 2025 10:52:00 +0000 (12:52 +0200)]
Merge pull request #15617 from Habbie/views-no-delete
remove mistaken doc section - you cannot delete views
Remi Gacogne [Fri, 27 Jun 2025 10:15:48 +0000 (12:15 +0200)]
lmdb-safe: Use unordered maps for the transaction maps
We don't need the maps to be ordered, and unordered maps are usually
slightly faster.
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Remi Gacogne [Fri, 27 Jun 2025 10:12:29 +0000 (12:12 +0200)]
lmdb-safe: Improve the scalability of transaction maps
This commit improves the scalability of the transaction maps by
moving from a `mutex` to a `shared_mutex` and making the stored value
atomic. This allows accessing the maps concurrently from different threads
as long as the entry for the thread exists, and we fall back to
taking a full lock otherwise.
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Miod Vallat [Fri, 27 Jun 2025 09:06:06 +0000 (11:06 +0200)]
Merge pull request #15733 from miodvallat/ENOSPC
Reduce ZoneName::toString mess
Peter van Dijk [Fri, 27 Jun 2025 07:41:36 +0000 (09:41 +0200)]
add test
Miod Vallat [Fri, 27 Jun 2025 06:35:02 +0000 (08:35 +0200)]
Remove ZoneName::toStringFull() now that it is identical to toString().
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Fri, 27 Jun 2025 06:33:58 +0000 (08:33 +0200)]
Let ZoneName::toString*() output the variant, if any.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Fri, 27 Jun 2025 06:33:32 +0000 (08:33 +0200)]
Let apiZoneNameToId() also encode the variant name, if any.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Lucas Rolff [Fri, 27 Jun 2025 08:05:58 +0000 (10:05 +0200)]
Change versionadded to 2.0.0
Co-authored-by: Remi Gacogne <github@coredump.fr>
Signed-off-by: Lucas Rolff <lucas@slcoding.com>
Miod Vallat [Fri, 27 Jun 2025 06:32:48 +0000 (08:32 +0200)]
Add a few more explicit DNSName casts when computing record data.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Fri, 27 Jun 2025 06:31:46 +0000 (08:31 +0200)]
Sprinkle explicit DNSName casts in cache purge operations.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Fri, 27 Jun 2025 05:56:36 +0000 (07:56 +0200)]
Rework stripDomainSuffix() interface to take a ZoneName. NFC
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Fri, 27 Jun 2025 05:50:28 +0000 (07:50 +0200)]
Move stripDomainSuffix() to its only user and make it static.
This also moves ciEqual() and endsOn() which are only used by
stripDomainSuffix().
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Lucas Rolff [Thu, 26 Jun 2025 20:45:28 +0000 (22:45 +0200)]
Correct getQueries() config reference
Replaced `droppped` with `total` in the rst.
Signed-off-by: Lucas Rolff <lucas@lucasrolff.com>
Lucas Rolff [Thu, 26 Jun 2025 20:36:03 +0000 (22:36 +0200)]
Add :getQueries() method to Server class
This exposes the total number of queries a downstream server has handled
similarly to how the :getDrops() method are available within Lua
When doing custom logic within Lua it's sometimes useful to be able to
know how many queries a given server has handled, so this simply exposes
that metric within the Server class directly.
Miod Vallat [Thu, 26 Jun 2025 15:30:27 +0000 (17:30 +0200)]
Merge pull request #15669 from miodvallat/serial_keyer
Increase zone serial number after zone key operations
Renaud Allard [Thu, 26 Jun 2025 14:39:38 +0000 (16:39 +0200)]
Update docs-new-preamble-in.rst
zonetocaches was under recursor section instead of recordcache
Signed-off-by: Renaud Allard <renaud@allard.it>
Miod Vallat [Thu, 26 Jun 2025 14:29:27 +0000 (16:29 +0200)]
Make sure tœ update the serial number within a transaction.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Fri, 13 Jun 2025 08:54:55 +0000 (10:54 +0200)]
Increase zone serial after crypto key operations (if setup to do so).
Fixes: #11733
Peter van Dijk [Thu, 26 Jun 2025 13:56:52 +0000 (15:56 +0200)]
Merge pull request #15618 from Habbie/views-wsauth-exceptions
views: exception text nits
Miod Vallat [Thu, 26 Jun 2025 13:32:21 +0000 (15:32 +0200)]
Merge pull request #15677 from miodvallat/enlarge_your_map
LMDB: honour map-size for all files
Remi Gacogne [Thu, 26 Jun 2025 13:23:45 +0000 (15:23 +0200)]
Merge pull request #15729 from rgacogne/ddist-additional-addresses-dot-doh-only
dnsdist: Enforce that additional addresses are DoT/DoH only
Peter van Dijk [Tue, 3 Jun 2025 11:41:14 +0000 (13:41 +0200)]
remove mistaken doc section - you cannot delete views
Peter van Dijk [Tue, 3 Jun 2025 11:38:59 +0000 (13:38 +0200)]
fix missing space in error message
Peter van Dijk [Tue, 3 Jun 2025 11:36:02 +0000 (13:36 +0200)]
we were always one dot short
Remi Gacogne [Thu, 26 Jun 2025 12:24:10 +0000 (14:24 +0200)]
dnsdist: Remove useless empty line
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Remi Gacogne [Thu, 26 Jun 2025 12:21:38 +0000 (14:21 +0200)]
dnsdist: Reduce the complexity of the YAML frontend code
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Miod Vallat [Thu, 26 Jun 2025 11:03:20 +0000 (13:03 +0200)]
Merge pull request #15728 from miodvallat/luar
Lua for all
Remi Gacogne [Thu, 26 Jun 2025 10:46:49 +0000 (12:46 +0200)]
dnsdist: Enforce that additional addresses are DoT/DoH only
I want to support additional addresses on frontends for all protocols,
but the amount of code to change is too important for the 2.0 branch.
So for now, let's document and enforce the current limitation to prevent
surprises.
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
Peter van Dijk [Thu, 26 Jun 2025 10:35:59 +0000 (12:35 +0200)]
Merge pull request #15594 from Habbie/auth-docker-version-crash
auth docker: avoid crash on --version caused by doubly loaded modules
Peter van Dijk [Thu, 26 Jun 2025 10:20:13 +0000 (12:20 +0200)]
Merge pull request #15698 from Habbie/fishing-for-salt
auth LMDB: attempt to have predictable IDs
Peter van Dijk [Thu, 26 Jun 2025 10:16:33 +0000 (12:16 +0200)]
Merge pull request #15621 from Habbie/views-rest-one-no-list
auth views REST: don't wrap list around single network
Miod Vallat [Thu, 26 Jun 2025 10:11:51 +0000 (12:11 +0200)]
Lua not being optional anymore, simplify autoconf handling.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Thu, 26 Jun 2025 09:04:56 +0000 (11:04 +0200)]
Try to make clang-tidy less unhappy. Yawn.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Remi Gacogne [Thu, 26 Jun 2025 08:46:58 +0000 (10:46 +0200)]
Merge pull request #15714 from nokia/serverstatechange
dnsdist: support server state change lua callback
Miod Vallat [Thu, 26 Jun 2025 08:42:17 +0000 (10:42 +0200)]
Mark dns_isspace as const rather than simply pure
Co-authored-by: Otto Moerbeek <otto.moerbeek@open-xchange.com>
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Thu, 26 Jun 2025 08:07:44 +0000 (10:07 +0200)]
Use three-way-comparisons to improve isCoveredByNSEC* logic.
This allows us to perform at most three comparisons instead of eight.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Thu, 26 Jun 2025 07:50:05 +0000 (09:50 +0200)]
Replace pairs of canonCompare calls with a single canonCompare_three_way.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Thu, 26 Jun 2025 07:41:17 +0000 (09:41 +0200)]
Fix ZoneName::operator< by traversing DNSName in the right direction.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Thu, 26 Jun 2025 07:33:22 +0000 (09:33 +0200)]
Introduce canonCompare_three_way for {DNS,Zone}Name.
This allows ZoneName::canonCompare* to only invoke
DNSName::canonCompare_three_way() once instead of
DNSName::canonCompare() twice.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Thu, 26 Jun 2025 07:32:27 +0000 (09:32 +0200)]
Merge pull request #15724 from miodvallat/don't_download_this_song
rec: avoid curl during build if unnecessary
Miod Vallat [Thu, 26 Jun 2025 06:51:30 +0000 (08:51 +0200)]
Use pdns_ilexicographical_compare_three_way() in DNSName::canonCompare()...
...rather than two std::lexicographical_compare() calls.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Thu, 26 Jun 2025 06:32:08 +0000 (08:32 +0200)]
de-inline DNSName::canonCompare(). NFC
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Thu, 26 Jun 2025 06:23:11 +0000 (08:23 +0200)]
Introduce pdns_ilexicographical_compare_three_way()...
...and rewrite pdns_ilexicographical_compare() and pdns_iequals() as
trivial wrappers around it.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Wed, 25 Jun 2025 17:17:21 +0000 (19:17 +0200)]
Factor out triplicated comparison code.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Wed, 25 Jun 2025 17:15:20 +0000 (19:15 +0200)]
Let toLowerCanonic() invoke toLowerInPlace() instead of duplicating it.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Wed, 25 Jun 2025 17:07:07 +0000 (19:07 +0200)]
Use twice as fewer dns_tolower() calls in pdns_ilexicographical_compare().
[Although the compiler had probably been smart enough to optimize this
already]
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Wed, 25 Jun 2025 17:01:16 +0000 (19:01 +0200)]
Mark dns_{isspace,tolower,toupper} pure.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Miod Vallat [Wed, 25 Jun 2025 13:17:55 +0000 (15:17 +0200)]
meson: do not download effective_tld_names.dat if already existing.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Otto Moerbeek [Wed, 25 Jun 2025 08:42:11 +0000 (10:42 +0200)]
Merge pull request #15721 from omoerbeek/rec-prep-5.3.0-alpha1
Rec: prep for rec-5.3.0-alpha1
Otto Moerbeek [Tue, 24 Jun 2025 10:53:06 +0000 (12:53 +0200)]
Rec: prep for rec-5.3.0-alpha1
Signed-off-by: Otto Moerbeek <otto.moerbeek@open-xchange.com>
Miod Vallat [Wed, 25 Jun 2025 05:38:51 +0000 (07:38 +0200)]
Merge pull request #15671 from miodvallat/lucky_number
Better LMDB error information
Miod Vallat [Fri, 13 Jun 2025 12:36:21 +0000 (14:36 +0200)]
Always put mdb error information in exceptions.
Fixes: #15458
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
Peter van Dijk [Tue, 24 Jun 2025 13:27:32 +0000 (15:27 +0200)]
Merge pull request #15643 from kpfleming/gh-actions-spectral-cli
gh actions: Use Spectral CLI to validate auth Swagger API spec
Peter van Dijk [Tue, 24 Jun 2025 11:30:01 +0000 (13:30 +0200)]
adjust swagger
Peter van Dijk [Tue, 24 Jun 2025 10:32:47 +0000 (12:32 +0200)]
fix test
Otto Moerbeek [Tue, 24 Jun 2025 09:36:07 +0000 (11:36 +0200)]
Merge pull request #15668 from omoerbeek/opentelemetry-trace
rec: generate trace data in OpenTelemetry format
Otto Moerbeek [Tue, 24 Jun 2025 08:53:37 +0000 (10:53 +0200)]
Use get_view() instead of get_data()
Signed-off-by: Otto Moerbeek <otto.moerbeek@open-xchange.com>
Peter van Dijk [Fri, 20 Jun 2025 14:53:20 +0000 (16:53 +0200)]
duck typing
Peter van Dijk [Fri, 20 Jun 2025 13:43:29 +0000 (15:43 +0200)]
format burtle.hh
Peter van Dijk [Fri, 20 Jun 2025 13:43:18 +0000 (15:43 +0200)]
format lmdbbackend.cc
Peter van Dijk [Fri, 20 Jun 2025 13:06:28 +0000 (15:06 +0200)]
running this test on both ends of a -both is pointless
Peter van Dijk [Fri, 20 Jun 2025 11:45:56 +0000 (13:45 +0200)]
no predictable IDs in the lmdb2 secondary
Peter van Dijk [Fri, 20 Jun 2025 10:41:38 +0000 (12:41 +0200)]
add boost::container::string version of burtleCI
Peter van Dijk [Fri, 20 Jun 2025 10:22:27 +0000 (12:22 +0200)]
move NOLINT
Peter van Dijk [Fri, 20 Jun 2025 09:48:52 +0000 (11:48 +0200)]
predictable IDs for other objects
Remi Gacogne [Tue, 24 Jun 2025 08:29:55 +0000 (10:29 +0200)]
Merge pull request #15717 from rgacogne/ddist-generate-files-when-building-release-tarball
dnsdist: Generate files when building the release tarball
Otto Moerbeek [Tue, 24 Jun 2025 07:56:22 +0000 (09:56 +0200)]
Use std::copy instead of memcpy
Signed-off-by: Otto Moerbeek <otto.moerbeek@open-xchange.com>