]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
4 months agoClean up ixfr transaction API
Alessio Podda [Sat, 25 Oct 2025 09:01:27 +0000 (11:01 +0200)] 
Clean up ixfr transaction API

Make the API tighter. The idea of this commit is to highlight the
distinction between a database transaction and a journal transaction,
and ensure we run dns_zone_verifydb on error.

Done to simplify a later refactor.

(cherry picked from commit 399f0c191a9bfb1d2a10ff7f51d3a42af5671d16)

4 months ago[9.20] fix: test: ISC_RUN_TEST_IMPL should use a static declaration
Mark Andrews [Wed, 28 Jan 2026 14:06:54 +0000 (01:06 +1100)] 
[9.20] fix: test: ISC_RUN_TEST_IMPL should use a static declaration

These functions don't need to be called from multiple places and
by making them static we will detect when they are not added to the
list functions to be tested.

Closes #5715

Backport of MR !11480

Merge branch 'backport-5715-isc_run_test_impl-should-use-a-static-declaration-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11502

4 months agoISC_RUN_TEST_IMPL should use a static declaration
Mark Andrews [Fri, 23 Jan 2026 04:57:42 +0000 (15:57 +1100)] 
ISC_RUN_TEST_IMPL should use a static declaration

These functions don't need to be called from multiple places and
by making them static we will detect when they are not added to the
list functions to be tested.

(cherry picked from commit 22d664aa152f089d5890cd400364400d2aa8e3ae)

4 months ago[9.20] chg: dev: Use enum rather than numbers for isc_base64_tobuffer and isc_hex_tob...
Mark Andrews [Tue, 27 Jan 2026 21:40:42 +0000 (08:40 +1100)] 
[9.20] chg: dev: Use enum rather than numbers for isc_base64_tobuffer and isc_hex_tobuffer

Use isc_one_or_more and isc_zero_or_more rather than (-2) and
(-1) when calling isc_base64_tobuffer. Similarly for
isc_hex_tobuffer. This should help reduce the probability
that the wrong number is used and it makes the intent clearer.

Closes #5713

Backport of MR !11479

Merge branch 'backport-5713-use-macros-with-isc_base64_tobuffer-and-isc_hex_tobuffer-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11498

4 months agoAdd spatch for isc_one_or_more and isc_zero_or_more
Mark Andrews [Tue, 27 Jan 2026 13:21:43 +0000 (00:21 +1100)] 
Add spatch for isc_one_or_more and isc_zero_or_more

(cherry picked from commit d92369cc8ff5f6f5225fd39bdf695dc531916f79)

4 months agoUse isc__zero_or_more when calling isc_base64_tobuffer
Mark Andrews [Fri, 23 Jan 2026 04:11:15 +0000 (15:11 +1100)] 
Use isc__zero_or_more when calling isc_base64_tobuffer

(cherry picked from commit 58432895507569116d88f11c48375ca3a82bd875)

4 months agoUse isc_one_or_more when calling isc_base64_tobuffer
Mark Andrews [Fri, 23 Jan 2026 03:59:37 +0000 (14:59 +1100)] 
Use isc_one_or_more when calling isc_base64_tobuffer

(cherry picked from commit 62fd89d4a121354c9e77d9429f53998c9d94d678)

4 months agoUse isc_one_or_more when calling isc_hex_tobuffer
Mark Andrews [Fri, 23 Jan 2026 04:08:40 +0000 (15:08 +1100)] 
Use isc_one_or_more when calling isc_hex_tobuffer

(cherry picked from commit 7feb0f5b539b939e89061bc1a02a1bdd5b93cea1)

4 months agoAdd enum for use with isc_base64_tobuffer and isc_hex_tobuffer
Mark Andrews [Fri, 23 Jan 2026 03:53:18 +0000 (14:53 +1100)] 
Add enum for use with isc_base64_tobuffer and isc_hex_tobuffer

This adds the following enum isc_one_or_more and isc_zero_or_more
which specify if one or more or zeror or more bytes are required
when reading the unbounded base64 / hex encoded data.

(cherry picked from commit 07610f8566daf532f3dbb312526422cd154b5ceb)

4 months ago[9.20] fix: usr: Fix a possible issue with reponse policy zones and catalog zones
Arаm Sаrgsyаn [Tue, 27 Jan 2026 13:28:33 +0000 (13:28 +0000)] 
[9.20] fix: usr: Fix a possible issue with reponse policy zones and catalog zones

If a response policy zone (RPZ) or a catalog zone contained an
`$INCLUDE` directive, then manually reloading that zone could
fail to process the changes in the response policy or in the
catalog, respectively. This has been fixed.

Closes #5714

Backport of MR !11489

Merge branch 'backport-5714-zone_loaddone-rpz-and-catz-bugfix-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11496

4 months agoAdd a new check in the RPZ system test
Aram Sargsyan [Mon, 26 Jan 2026 14:28:10 +0000 (14:28 +0000)] 
Add a new check in the RPZ system test

Check that reloading a response policy zone which has an '$INCLUDE'
directive defined is working as expected.

(cherry picked from commit d81a2457d6fe09a01d60d4204fb80c3e2feec88d)

4 months agoFix a bug in zone_loaddone()
Aram Sargsyan [Mon, 26 Jan 2026 15:34:00 +0000 (15:34 +0000)] 
Fix a bug in zone_loaddone()

The zone_loaddone() function disables database notifications for
a catalog zones and response policy zones (RPZ) when loading had
failed. Howerer, the 'result != ISC_R_SUCCESS' check is insufficient,
because the DNS_R_SEENINCLUDE result also indicates success.

Add a second condition for the "if" block.

(cherry picked from commit 31290eccb1246cc1aefd8a062e36de12ca0f24e1)

4 months ago[9.20] fix: test: Resolve the system_test_dir in pytest
Nicki Křížek [Tue, 27 Jan 2026 12:20:24 +0000 (13:20 +0100)] 
[9.20] fix: test: Resolve the system_test_dir in pytest

If the system_test_dir contains a symlink, then it might cause issues
further down when using relative_to(), unless it is resolved first. This
has been observed on FreeBSD13 in CI where /home is a symlink to
/usr/home.

Backport of MR !11490

Merge branch 'backport-nicki/pytest-freebsd13-artifacts-path-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11494

4 months agoResolve the system_test_dir in pytest
Nicki Křížek [Mon, 26 Jan 2026 17:37:00 +0000 (18:37 +0100)] 
Resolve the system_test_dir in pytest

If the system_test_dir contains a symlink, then it might cause issues
further down when using relative_to(), unless it is resolved first. This
has been observed on FreeBSD13 in CI where /home is a symlink to
/usr/home.

(cherry picked from commit b1e346905912db53c9e92b2729849e3bb6f74816)

4 months ago[9.20] chg: test: Use isctest.asyncserver in the "resolver" system test
Štěpán Balážik [Tue, 27 Jan 2026 11:29:38 +0000 (11:29 +0000)] 
[9.20] chg: test: Use isctest.asyncserver in the "resolver" system test

Depends on !11403, !11419

Backport of MR !11411

Merge branch 'backport-stepan/resolver-asyncserver-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11486

4 months agoFix bugs in 'resolver/ans2' and 'resolver/ans3'
Štěpán Balážik [Thu, 25 Dec 2025 20:48:33 +0000 (21:48 +0100)] 
Fix bugs in 'resolver/ans2' and 'resolver/ans3'

There were multiple typos and omissions regarding query minimization.

(cherry picked from commit c336c1feaba1f95e35151b02d2ac5278d9cc2d98)

4 months agoReimplement 'resolver/ans10' server using AsyncDnsServer
Štěpán Balážik [Thu, 25 Dec 2025 16:03:20 +0000 (17:03 +0100)] 
Reimplement 'resolver/ans10' server using AsyncDnsServer

Ensure packet-for-packet compatibility with the old server.

(cherry picked from commit cef851740bf7c6e3633ff9226d46c09728198255)

4 months agoReimplement 'resolver/ans8' server using AsyncDnsServer
Štěpán Balážik [Thu, 25 Dec 2025 16:03:20 +0000 (17:03 +0100)] 
Reimplement 'resolver/ans8' server using AsyncDnsServer

Ensure packet-for-packet compatibility with the old server.

(cherry picked from commit 8f2526a27d9dfef46ef1ef26a971cc928c6c0f08)

4 months agoReimplement 'resolver/ans3' server using AsyncDnsServer
Štěpán Balážik [Thu, 25 Dec 2025 16:03:20 +0000 (17:03 +0100)] 
Reimplement 'resolver/ans3' server using AsyncDnsServer

Ensure packet-for-packet compatibility with the old server including
bugs.

(cherry picked from commit 5004d278e49d84bd80479c0c5a842b3fb4d58c19)

4 months agoReimplement 'resolver/ans2' server using AsyncDnsServer
Štěpán Balážik [Thu, 25 Dec 2025 16:03:20 +0000 (17:03 +0100)] 
Reimplement 'resolver/ans2' server using AsyncDnsServer

Ensure packet-for-packet compatibility with the old server including
bugs.

(cherry picked from commit d203a39314489d0958db11da8e105215dde4d80b)

4 months agoAdd common parts of resolver test custom servers
Štěpán Balážik [Fri, 26 Dec 2025 00:06:28 +0000 (01:06 +0100)] 
Add common parts of resolver test custom servers

These will be shared by all the ans*/ans.py files.

(cherry picked from commit 23d9055617f1911ca2e600d31688e34e48e0993c)

4 months agoAdd StaticResponseHandler to isctest.asyncserver
Štěpán Balážik [Fri, 26 Dec 2025 00:03:33 +0000 (01:03 +0100)] 
Add StaticResponseHandler to isctest.asyncserver

It is used to prepare and yield one DNS response and avoid the
`get_responses` boiler-plate.

(cherry picked from commit eba89fd38b029a7722e3d70952ac4cb6c8769cc4)

4 months agoAdd QnameQtypeHandler for matching QNAME, QTYPE pairs
Štěpán Balážik [Thu, 25 Dec 2025 22:53:26 +0000 (23:53 +0100)] 
Add QnameQtypeHandler for matching QNAME, QTYPE pairs

This is a pattern in the resolver system test and also elsewhere.

(cherry picked from commit 8a45f5b485eff318e43bcc1c5aecb7185955b9b2)

4 months agoDelete unused ResponseHandlers from statistics ans server
Štěpán Balážik [Thu, 25 Dec 2025 16:00:00 +0000 (17:00 +0100)] 
Delete unused ResponseHandlers from statistics ans server

Turns out the original ans.pl implementation before (!10928) was a copy
of an old version of the ans2 server from the resolver system test.

I reimplemented it fully, even though only two ResponseHandlers are
actually used in the statistics test.

(cherry picked from commit 7d5ec7167b0c8b766760146c98a5c1072223bc90)

4 months agoStore the most specific matched domain in DomainHandler
Štěpán Balážik [Thu, 25 Dec 2025 15:58:35 +0000 (16:58 +0100)] 
Store the most specific matched domain in DomainHandler

Store the most specific matching domain in DomainHandler and
expose it through the `matched_domain` property for subclasses
to use in their implementations of `get_responses`.

(cherry picked from commit b89cc2bd862ad12a7983df3ca317b33406ac9868)

4 months ago[9.20] fix: usr: Fix brid and hhit implementation
Mark Andrews [Tue, 27 Jan 2026 06:30:48 +0000 (17:30 +1100)] 
[9.20] fix: usr: Fix brid and hhit implementation

Fix bugs in BRID and HHIT implementation and enable
the unit tests.

Closes #5710

Backport of MR !11491

Merge branch 'backport-5710-fix-hhit-and-brid-issues-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11492

4 months agoFix brid and hhit unit tests
Mark Andrews [Sat, 24 Jan 2026 07:37:52 +0000 (18:37 +1100)] 
Fix brid and hhit unit tests

These tests were not being run.

(cherry picked from commit 97af8fc519590bd0d794f1208b6ad60aa717e2c7)

4 months agoRemove extraneous space at start of brid and hhit records
Mark Andrews [Sat, 24 Jan 2026 07:33:47 +0000 (18:33 +1100)] 
Remove extraneous space at start of brid and hhit records

(cherry picked from commit 10366e4f4e52f45ba46a7e839ffd3df9d4ab15ef)

4 months agoFix isc_base64_tobuffer call for brid and hhit
Mark Andrews [Sat, 24 Jan 2026 07:32:40 +0000 (18:32 +1100)] 
Fix isc_base64_tobuffer call for brid and hhit

Zero length records were not being rejected.

(cherry picked from commit bdb9c838a82558f7b3e1bcf0b9dd7e6f1cfb9aa8)

4 months ago[9.20] fix: test: unit test tsig_badsig was not being called
Mark Andrews [Fri, 23 Jan 2026 22:08:36 +0000 (09:08 +1100)] 
[9.20] fix: test: unit test tsig_badsig was not being called

Additionally, the test was badly implemented. This has been fixed.

Closes #5712

Backport of MR !11478

Merge branch 'backport-5712-unit-test-tsig_badsig-was-not-being-called-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11485

4 months agoFix and call tsig_badsig unit test
Mark Andrews [Fri, 23 Jan 2026 03:30:44 +0000 (14:30 +1100)] 
Fix and call tsig_badsig unit test

(cherry picked from commit 8da2310511c26c1d0264c028aed12bda48376c44)

4 months ago[9.20] fix: usr: DSYNC record incorrectly used two octets for the Scheme Field
Mark Andrews [Fri, 23 Jan 2026 15:19:23 +0000 (02:19 +1100)] 
[9.20] fix: usr: DSYNC record incorrectly used two octets for the Scheme Field

When creating the `DSYNC` record from a structure, `uint16_tobuffer` was used instead of `uint8_tobuffer` when adding the scheme, causing a `DSYNC` record that was one octet too long. This has been fixed.

Closes #5711

Backport of MR !11477

Merge branch 'backport-5711-dsync_fromstruct-produces-an-invalid-record-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11483

4 months agoFix dsync unit test
Mark Andrews [Fri, 23 Jan 2026 02:38:16 +0000 (13:38 +1100)] 
Fix dsync unit test

The dsync unit test was not being run and the domain names in
the test data should have been fully qualified.

(cherry picked from commit 2159f74a1f3b7498a59516375be928109ec847e2)

4 months agodsync_from struct produced an invalid record
Mark Andrews [Fri, 23 Jan 2026 02:32:41 +0000 (13:32 +1100)] 
dsync_from struct produced an invalid record

uint16_tobuffer was used instead of uint8_tobuffer when adding the
scheme to the buffer.  This produced a record that was one octet
too long.  This has been fixed.

(cherry picked from commit 3180e5045978ce9fef524e98a66c0fdc7d7b783c)

4 months ago[9.20] chg: ci: Use a small always-on runner for lightweight CI jobs
Andoni Duarte [Fri, 23 Jan 2026 12:38:56 +0000 (12:38 +0000)] 
[9.20] chg: ci: Use a small always-on runner for lightweight CI jobs

Some CI jobs spend more time pulling the docker image and setting up their environment than running the script. This MR adds a tag `smalljob` to jobs considered lightweight in order to run them on a dedicated small VM.

Backport of MR !11266

Merge branch 'backport-andoni/try-small-vm-for-lightweight-ci-jobs-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11481

4 months agoAdd smalljob tag to small jobs not in the quick-checks stage
Andoni Duarte Pintado [Thu, 15 Jan 2026 11:16:30 +0000 (12:16 +0100)] 
Add smalljob tag to small jobs not in the quick-checks stage

Jobs using the "post_merge" and "manual_release_job_qa" anchors also
complete in less than a minute, so they now include the "smalljob" tag.

Since the "release" job is also a fast one, but without an anchor, the
"smalljob" tag is added to its definition.

The "autoconf_job" definion also includes the tag and it is kept in its
own stage.

(cherry picked from commit e9f2b7944e6d9ad3e93357046828e92d61e15108)

4 months agoDe-duplicate yaml for "other-checks" jobs
Andoni Duarte Pintado [Tue, 13 Jan 2026 15:32:45 +0000 (16:32 +0100)] 
De-duplicate yaml for "other-checks" jobs

In .gitlab-ci.yml, since "&other_checks_job" has "needs: []", remove
that line from the jobs that use that anchor.

(cherry picked from commit 66175b448cbc0db5b26095dae47333549e82c325)

4 months agoMove "needs: []" to the "quick_checks_job" anchor
Andoni Duarte Pintado [Fri, 19 Dec 2025 10:55:30 +0000 (11:55 +0100)] 
Move "needs: []" to the "quick_checks_job" anchor

Most jobs in this stage have it by default, so it makes sense to
add it to their common anchor. Jobs with different "needs:" will
override it.

(cherry picked from commit 432b7d7954bc37175c5db20c2f5894214ca0661d)

4 months agoGroup CI jobs in "quick-checks" stage together
Andoni Duarte Pintado [Mon, 15 Dec 2025 16:21:27 +0000 (17:21 +0100)] 
Group CI jobs in "quick-checks" stage together

Move the jobs in the "quick-checks" stage to the same place in
.gitlab-ci.yml.

(cherry picked from commit b3ac6b47d9bd347a2a008cd834a8553d585e9308)

4 months agoAdd faster CI jobs to the "quick-checks" stage
Andoni Duarte Pintado [Mon, 15 Dec 2025 16:19:28 +0000 (17:19 +0100)] 
Add faster CI jobs to the "quick-checks" stage

Given the short runtime (<1min) of the "linkcheck" and
"generate-tsan-stress-test-configs" CI jobs, move them to the
"quick-checks" stage.

(cherry picked from commit ae7682915712e7abbfb3cbfefc837f0505b68bd0)

4 months agoMove CI stage "other-checks" right after "quick-checks"
Andoni Duarte Pintado [Mon, 15 Dec 2025 16:01:58 +0000 (17:01 +0100)] 
Move CI stage "other-checks" right after "quick-checks"

Move CI stage "other-checks" right after "quick-checks" and get the jobs
in it as close to each other as possible in .gitlab-ci.yml.

Since no job is allowed to depend (via "needs") on any job that is
assigned to a stage later than its own, move the "tsan:stress" and
"gcov" jobs to the "system" stage.

(cherry picked from commit 4f89d32bff81935e9688b9664a68e517fb585194)

4 months agoMove slower CI jobs out of "quick-checks" stage
Andoni Duarte Pintado [Mon, 15 Dec 2025 14:50:28 +0000 (15:50 +0100)] 
Move slower CI jobs out of "quick-checks" stage

Jobs with more than one minute of runtime are not considered for the
small VM.

The "tarball-create" job goes to the more appropriate "build" stage.

"coccinelle" and "checkbashisms" are moved to the generic
"other-checks".

(cherry picked from commit ba5844a1de9a8ede9396112ae78e22d7dcfb95b7)

4 months agoCreate "other_checks_job" anchor in CI yaml
Andoni Duarte Pintado [Mon, 15 Dec 2025 13:47:08 +0000 (14:47 +0100)] 
Create "other_checks_job" anchor in CI yaml

Use an anchor for the common parts of "other-checks" jobs in CI yaml.

(cherry picked from commit e61bc3ad72d65b57ae2a96c25c944a04fa447454)

4 months agoRename the "postcheck" stage to "other-checks" in CI
Andoni Duarte Pintado [Mon, 15 Dec 2025 13:49:59 +0000 (14:49 +0100)] 
Rename the "postcheck" stage to "other-checks" in CI

Rename the "postcheck" CI stage to the more generic "other-checks".
Slower jobs that still run in autoscaled runners belong here, as opposed
to the lightweight ones in "quick-checks".

(cherry picked from commit 6d442c4a06a35b6551a75e31e30254e47af2339f)

4 months agoRename the "precheck" stage in CI to "quick-checks"
Andoni Duarte Pintado [Mon, 15 Dec 2025 12:08:44 +0000 (13:08 +0100)] 
Rename the "precheck" stage in CI to "quick-checks"

Most jobs in the "precheck" stage spend more time setting up their
environment than running the script (seconds), this allows us to add a
small always on dedicated runner instead of the autoscaled ones.

Hence, the stage is renamed to "quick-checks", and a tag "smalljob" is
added to the anchor so that these jobs are picked by the dedicated
runner.

(cherry picked from commit 9aa5041a88e20ab24559091494bbd20944723225)

4 months ago[9.20] fix: ci: Read the Docs picking old version when stable tag is updated
Andoni Duarte [Thu, 22 Jan 2026 19:17:49 +0000 (19:17 +0000)] 
[9.20] fix: ci: Read the Docs picking old version when stable tag is updated

Read the Docs fails to pick the latest version when updating the `stable` tag, i.e. a build is triggered but it takes the previous version of it. This is a known bug in RtD: https://github.com/readthedocs/readthedocs.org/issues/10838.

The only approach that seems to solve this on our end, is to wait some time and trigger the build again so that it picks the latest version of the tag.

Backport of MR !11475

Merge branch 'backport-andoni/fix-rtd-picking-old-version-when-stable-branch-update-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11476

4 months agoFix Read the Docs stable branch update bug
Andoni Duarte Pintado [Thu, 22 Jan 2026 12:25:18 +0000 (13:25 +0100)] 
Fix Read the Docs stable branch update bug

Read the Docs fails to pick the latest version of the stable tag when
updated, i.e. a build is triggered but it takes the previous version.
This commit triggers a second build after 5 minutes to ensure that the
correct tag version is used for the documentation.

This is a known bug in RtD:
https://github.com/readthedocs/readthedocs.org/issues/10838.

(cherry picked from commit 168b15cfd9c8d9a8562e596f78bb971e84c686f4)

4 months ago[9.20] fix: ci: Apply black formatting changes
Nicki Křížek [Thu, 22 Jan 2026 08:44:36 +0000 (09:44 +0100)] 
[9.20] fix: ci: Apply black formatting changes

Generated by black 26.1.0 which got updated in CI.

Merge branch 'nicki/python-black-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11472

4 months agoApply black formatting changes
Nicki Křížek [Wed, 21 Jan 2026 21:39:09 +0000 (22:39 +0100)] 
Apply black formatting changes

Generated by black 26.1.0 which got updated in CI.

4 months ago[9.20] chg: pkg: Update requirements for system test suite
Nicki Křížek [Wed, 21 Jan 2026 15:36:52 +0000 (16:36 +0100)] 
[9.20] chg: pkg: Update requirements for system test suite

Python 3.10 or newer is now required for running the system test suite. The required python packages and their version requirements are now tracked in `bin/tests/system/requirements.txt`.

Support for pytest 9.0.0 has been added its minimum supported version has been raised to 7.0.0. The minimum supported dnspython version has been raised to 2.3.0.

Closes #5690

Closes #5614

Backport of MR !11415

Merge branch 'backport-nicki/pytest-9-compat-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11469

4 months agoSilence incorrect pylint warnings for hypothesis.assume()
Nicki Křížek [Wed, 31 Dec 2025 09:53:23 +0000 (10:53 +0100)] 
Silence incorrect pylint warnings for hypothesis.assume()

With hypothesis>6.148.3, pylint generates

W0101: Unreachable code (unreachable)

when any code is present after hypothesis.assume(). Silence these until
it is fixed upstream.

See https://github.com/pylint-dev/pylint/issues/10785#issuecomment-3677224217

(cherry picked from commit 08630ca744a05bacba7eb187274507e64121c965)

4 months agoRemove hypothesis version checks
Nicki Křížek [Tue, 30 Dec 2025 13:46:23 +0000 (14:46 +0100)] 
Remove hypothesis version checks

The minimum required hypothesis version has been set in requirements.txt
and no longer needs to be checked at runtime.

Since the hypothesis package is now a mandatory prerequisite, include it
in isctest as the other subpackages.

(cherry picked from commit 1291fa1a6da2b4fc52a779a326c438e758e103a8)

4 months agoRemove compatibility hacks for dnspython<2.7.0
Nicki Křížek [Tue, 30 Dec 2025 13:29:51 +0000 (14:29 +0100)] 
Remove compatibility hacks for dnspython<2.7.0

The minimum required dnspython version is now 2.7.0 and those
compatibility hacks can be dropped.

(cherry picked from commit ce385d8100b9dfc14b6233453ea7dbcf0db56b3b)

4 months agoBump the minimum required python version to 3.10
Nicki Křížek [Tue, 30 Dec 2025 12:45:50 +0000 (13:45 +0100)] 
Bump the minimum required python version to 3.10

Drop support of EoL python versions for running system tests. The
maintenance cost of supporting end of life ecosystem, especially Python
3.6 on EL8 and the related outdated packages (pytest, dnspython, ...),
has become unreasonable.

(cherry picked from commit ac8e2905b89d69318ef5351dbffcedcc2f8bdcf9)

4 months agoRemove pytest<7 compatibility hacks
Nicki Křížek [Tue, 30 Dec 2025 12:42:53 +0000 (13:42 +0100)] 
Remove pytest<7 compatibility hacks

Minimum pytest version has been bumped to 7.0.0, thus these are no
longer needed.

(cherry picked from commit e276c3d5bde2096759acc7563e4810cdf868e753)

4 months agoAdd support for pytest>=9.0.0
Nicki Křížek [Tue, 16 Dec 2025 16:48:04 +0000 (17:48 +0100)] 
Add support for pytest>=9.0.0

Use collection_path rather than the deprecated path argument for
pytest_ignore_collect() hook.

The collection_path argument was added in pytest 7.0.0, which is the
minimum supported pytest version from now on.

(cherry picked from commit 093bef9211b252653425f4477aa513d85e260cef)

4 months agoAdd requirements.txt for system tests
Nicki Křížek [Tue, 16 Dec 2025 17:27:20 +0000 (18:27 +0100)] 
Add requirements.txt for system tests

This file lists the required Python packages and versions for running
system tests. The easiest way to obtain them is:

    pip install -r requirements.txt

The minimum dnspython version is 2.7.0 because it supports TSIG parsing
without validation (for tsig/tests_tsig_hypothesis.py) and wire() (for
names/tests_names.py).

The minimum pytest version was bumped to 7.0.0 because it supports the
collection hook API required by pytest 9.

The minimum hypothesis version was set to 4.41.2 as prior versions might
have issues on FIPS systems.

(cherry picked from commit 628e16d057cd204ca1a3bedd180a810061b1c3f6)

4 months agoMerge tag 'v9.20.18' into bind-9.20
Nicki Křížek [Wed, 21 Jan 2026 14:37:29 +0000 (14:37 +0000)] 
Merge tag 'v9.20.18' into bind-9.20

4 months ago[9.20] fix: test: Fix timing issues in nsec3/tests_nsec3_reconfig.py
Mark Andrews [Wed, 21 Jan 2026 11:02:36 +0000 (22:02 +1100)] 
[9.20] fix: test: Fix timing issues in nsec3/tests_nsec3_reconfig.py

`ns3/nsec3-ent.kasp.db` is regenerated too fast resulting in
the subsequent `rndc reload` call failing.  This has been
fixed.

Closes #5707

Backport of MR !11467

Merge branch 'backport-5707-timing-issues-in-nsec3-tests_nsec3_reconfig-py-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11468

4 months agoFix timing issues in nsec3/tests_nsec3_reconfig.py
Mark Andrews [Wed, 21 Jan 2026 05:01:57 +0000 (16:01 +1100)] 
Fix timing issues in nsec3/tests_nsec3_reconfig.py

ns3/nsec3-ent.kasp.db is regenerated too fast resulting in
the subsequent 'rndc reload' call failing.  This has been
fixed.

(cherry picked from commit f01497e05b23ebc850b0a9a1c4d8eb7aa1763dbc)

4 months ago[9.20] fix: dev: Use const pointer with strchr of const pointer
Mark Andrews [Tue, 20 Jan 2026 06:40:55 +0000 (17:40 +1100)] 
[9.20] fix: dev: Use const pointer with strchr of const pointer

Closes #5694

Backport of MR !11394

Merge branch 'backport-5694-fedora-builds-with-werror-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11463

4 months agoUse const pointer with strchr of const pointer
Mark Andrews [Fri, 19 Dec 2025 01:32:33 +0000 (12:32 +1100)] 
Use const pointer with strchr of const pointer

C23 now has qualifier preserving standard functions for strchr,
bsearch, strpbrk, strrchr, strstr, memchr.  There where a few places
where the return value was not assigned to a const qualified pointer.
These have been fixed.

(cherry picked from commit af379e10ccbede22a38cdbee58c6a71c097221d2)

4 months ago[9.20] fix: test: Portions of two dnssec-malformed-dnskey tests need querytrace
Michal Nowak [Thu, 15 Jan 2026 13:48:17 +0000 (14:48 +0100)] 
[9.20] fix: test: Portions of two dnssec-malformed-dnskey tests need querytrace

Without querytrace set, test_malformed_ecdsa and test_multiple_rrsigs
fail on the log_validation_failed string.

Backport of MR !11454

Merge branch 'backport-mnowak/dnssec-malformed-dnskey-needs-querytrace-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11456

4 months agoPortions of two dnssec-malformed-dnskey tests need querytrace
Michal Nowak [Wed, 14 Jan 2026 18:27:47 +0000 (19:27 +0100)] 
Portions of two dnssec-malformed-dnskey tests need querytrace

Without querytrace set, test_malformed_ecdsa and test_multiple_rrsigs
fail on the log_validation_failed string.

(cherry picked from commit d03b3f5a1d3114b30e9f30a82caf9ccf38c0816b)

4 months ago[9.20] chg: test: Use isctest.asyncserver in the "ixfr" test
Štěpán Balážik [Wed, 14 Jan 2026 12:58:47 +0000 (12:58 +0000)] 
[9.20] chg: test: Use isctest.asyncserver in the "ixfr" test

Backport of MR !11403

Merge branch 'backport-stepan/ixfr-asyncserver-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11453

4 months agoUse isctest.asyncserver in the "ixfr" system test
Štěpán Balážik [Tue, 23 Dec 2025 13:41:18 +0000 (14:41 +0100)] 
Use isctest.asyncserver in the "ixfr" system test

Replace the usage of the `bin/tests/system/ans.pl` server with an
instance of ControllableAsyncServer.

(cherry picked from commit 46ecbbed0a1eea6da600255de72e66f889b8f62c)

4 months agoAdd SwitchControlCommand for ControllableAsyncServer
Štěpán Balážik [Tue, 23 Dec 2025 13:36:56 +0000 (14:36 +0100)] 
Add SwitchControlCommand for ControllableAsyncServer

To provide feature parity with `bin/tests/system/ans.pl` add a control
command to allow easy switching between different sequences of
ResponseHandlers.

(cherry picked from commit 2302fe1235f64691620834922eda33397e1f0157)

4 months agoUse variadic positional parameters for plural install_* methods
Štěpán Balážik [Wed, 17 Dec 2025 13:08:03 +0000 (14:08 +0100)] 
Use variadic positional parameters for plural install_* methods

It saves an indent and brackets on the call sites.

Also sort the handlers alphabetically where their order doesn't matter
and split the fallback handlers into a separate call to signify that
their position in the end matters.

(cherry picked from commit 7e587201a4e49c88cfb4a46662d819c3a35b703b)

4 months ago[9.20] fix: usr: Make catalog zone names and member zones' entry names case-insensitive
Arаm Sаrgsyаn [Mon, 12 Jan 2026 16:33:55 +0000 (16:33 +0000)] 
[9.20] fix: usr: Make catalog zone names and member zones' entry names case-insensitive

Previously, the catalog zone names and their member zones' entry
names were unintentionally case-sensitive. This has been fixed.

Closes #5693

Backport of MR !11410

Merge branch 'backport-5693-catz-case-sensitivity-fix-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11450

4 months agoIgnore case for some messages in the catz system test
Aram Sargsyan [Mon, 12 Jan 2026 15:16:29 +0000 (15:16 +0000)] 
Ignore case for some messages in the catz system test

RBT and QP builds output some log messages in different cases. Ignore
the case of the affected log messages.

4 months agoTest that catalog zones' entry names are case-insensitive
Aram Sargsyan [Thu, 25 Dec 2025 12:27:37 +0000 (12:27 +0000)] 
Test that catalog zones' entry names are case-insensitive

(cherry picked from commit 4e9d97b4f715a64a62c46cfc4a7b7c24e3bca69c)

4 months agoMake catalog zones' entry names case-insensitive
Aram Sargsyan [Thu, 25 Dec 2025 12:25:48 +0000 (12:25 +0000)] 
Make catalog zones' entry names case-insensitive

Previously, the isc_ht hash table module was case-sensitive, but now
it supports case-insensitive mode. Use the case-insensitive mode
for the catalog zones' entry names.

(cherry picked from commit 6f4b5d695838d38139aef609329011c4bad00c96)

4 months agoTest that catalog zone names are case-insensitive
Aram Sargsyan [Thu, 25 Dec 2025 11:39:54 +0000 (11:39 +0000)] 
Test that catalog zone names are case-insensitive

Change one of the existing catalog zone names to test that
catalog zones are now case-insensitive.

(cherry picked from commit 6d0e6454ac4cd238a31198a3ef81824e818d0829)

4 months agoMake catalog zone names case-insensitive
Aram Sargsyan [Fri, 19 Dec 2025 17:51:08 +0000 (17:51 +0000)] 
Make catalog zone names case-insensitive

Previously, the isc_ht hash table module was case-sensitive, but now
it supports case-insensitive mode. Use the case-insensitive mode
for catalog zone names.

(cherry picked from commit 0e0ba06dbfa14966a9d6807f83446079e583047c)

4 months ago[9.20] chg: test: Replace digdelv ans.pl with AsyncDnsServer
Nicki Křížek [Mon, 12 Jan 2026 12:21:42 +0000 (13:21 +0100)] 
[9.20] chg: test: Replace digdelv ans.pl with AsyncDnsServer

Rewrite ans servers in digdelv test to use AsyncDnsServer.

Backport of MR !11308

Merge branch 'backport-nicki/asyncdnsserver-digdelv-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11448

4 months agoRenumber ans7->ans6 and ans8->ans7 in digdelv test
Nicki Křížek [Wed, 7 Jan 2026 15:31:37 +0000 (16:31 +0100)] 
Renumber ans7->ans6 and ans8->ans7 in digdelv test

Since there was no 10.53.0.6 server in the test, renumber the remaining
ones so that there's no gap in the server names.

This commit simply moves the ans.py files without any changes and
renumbers the IP addresses in tests.

(cherry picked from commit 9b63187a99b00ffc272612247a2ce5eba84fb71b)

4 months agoAdd dnspython>=2.0.0 requirement for digdelv
Nicki Křížek [Fri, 28 Nov 2025 15:49:08 +0000 (16:49 +0100)] 
Add dnspython>=2.0.0 requirement for digdelv

Now that the test uses AsyncDnsServer, require the appropriate dnspython
version for the test.

(cherry picked from commit 6c69abf7833b1ed2c5edd8a71faf5658e70a697b)

4 months agoReplace digdelv/ans8 with AsyncDnsServer
Nicki Křížek [Fri, 28 Nov 2025 15:41:44 +0000 (16:41 +0100)] 
Replace digdelv/ans8 with AsyncDnsServer

Previously, the ans8 server had different response modes that applied to
all queries. Replace it with AsyncDnsServer that has serves the different
response modes under different domains without the need to change the
server behaviour at runtime.

Add the new queries that require an ns3 fallback to the ns3/example.db
zone.

(cherry picked from commit 0b7a089c7f575e6005fbcf84c8faf4dd439d521a)

4 months agoReplace digdelv/ans5 with ControllableAsyncDnsServer
Nicki Křížek [Fri, 28 Nov 2025 15:13:43 +0000 (16:13 +0100)] 
Replace digdelv/ans5 with ControllableAsyncDnsServer

The server has three modes of operation - either no response, a partial
AXFR or a complete AXFR. To test the fallback behaviour of dig, these
actions are be combined in a specific sequences. To set up the desired
server behaviour, use the _control queries for the server.

(cherry picked from commit 575f0e39165815566a35a9442e2737b26d45a518)

4 months agoRename ResponseDropAndCloseConnection action
Nicki Křížek [Fri, 28 Nov 2025 14:34:38 +0000 (15:34 +0100)] 
Rename ResponseDropAndCloseConnection action

The action can be used to close the connection even after some response
was sent, depending on the ordering of actions in the handler that uses
it. Rename it to CloseConnection to use a more fitting name.

(cherry picked from commit 20887ff80f18e28bd5404f40488151c855f26d5f)

4 months agoReplace digdelv/ans7 with AsyncDnsServer
Nicki Křížek [Fri, 28 Nov 2025 10:19:24 +0000 (11:19 +0100)] 
Replace digdelv/ans7 with AsyncDnsServer

ans7 server always replies with an UPDATE opcode in the message.

(cherry picked from commit c50a7d2de198a83692d144e5b5b7e4394e1563a9)

4 months agoReplace digdelv/ans4 with AsyncDnsServer
Nicki Křížek [Thu, 27 Nov 2025 17:12:55 +0000 (18:12 +0100)] 
Replace digdelv/ans4 with AsyncDnsServer

Configure the AsyncDnsServer to ignore all queries to ensure the same
behaviour as with "//" command for ans.pl.

(cherry picked from commit 648f2534b1579c3a47c4a223c89db5ef9933c0dc)

4 months agoRemove unused digdelv/ans6 server
Nicki Křížek [Thu, 27 Nov 2025 16:48:16 +0000 (17:48 +0100)] 
Remove unused digdelv/ans6 server

This server receives no queries during the test and doesn't affect the
test outcome.

(cherry picked from commit 3a6b977a924d460e6f3d0a05fded6f6d5bf498e2)

4 months ago[9.20] chg: test: Avoid sending manually created responses in asyncserver
Štěpán Balážik [Fri, 9 Jan 2026 17:26:49 +0000 (17:26 +0000)] 
[9.20] chg: test: Avoid sending manually created responses in asyncserver

If at all possible, all the responses should be created by
AsyncDnsServer's internal methods. To ensure this, mark them with a
magic attribute and check it on send and crash the server if a manually
created response is detected.

Backport of MR !11420

Merge branch 'backport-stepan/avoid-using-hand-rolled-responses-in-asyncserver-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11445

4 months agoAvoid sending manually created responses in asyncserver
Štěpán Balážik [Fri, 2 Jan 2026 19:36:29 +0000 (20:36 +0100)] 
Avoid sending manually created responses in asyncserver

If at all possible, all the responses should be created by
AsyncDnsServer's internal methods. To ensure this, mark them with a
magic attribute and check it on send and crash the server if a manually
created response is detected.

Fix the qmin test server which uses `make_response`.

(cherry picked from commit 1fc206556bc0449eca231bf6c17bc796b7d82fa2)

4 months agoUpdate BIND version for release v9.20.18
Nicki Křížek [Fri, 9 Jan 2026 13:33:16 +0000 (14:33 +0100)] 
Update BIND version for release

4 months agonew: doc: Prepare documentation for BIND 9.20.18
Nicki Křížek [Fri, 9 Jan 2026 13:31:16 +0000 (14:31 +0100)] 
new: doc: Prepare documentation for BIND 9.20.18

Merge branch 'nicki/prepare-documentation-for-bind-9.20.18' into 'v9.20.18-release'

See merge request isc-private/bind9!899

4 months agoTweak and reword release notes
Nicki Křížek [Thu, 8 Jan 2026 15:32:14 +0000 (16:32 +0100)] 
Tweak and reword release notes

4 months agoRemove release note for GL #5671
Nicki Křížek [Fri, 9 Jan 2026 12:22:47 +0000 (13:22 +0100)] 
Remove release note for GL #5671

This was already fixed in the previous release.

4 months agoPrepare release notes for BIND 9.20.18
Nicki Křížek [Thu, 8 Jan 2026 15:17:09 +0000 (16:17 +0100)] 
Prepare release notes for BIND 9.20.18

4 months agoGenerate changelog for BIND 9.20.18
Nicki Křížek [Thu, 8 Jan 2026 15:12:53 +0000 (16:12 +0100)] 
Generate changelog for BIND 9.20.18

4 months ago[9.20] [CVE-2025-13878] sec: usr: Fix incorrect length checks for BRID and HHIT records
Nicki Křížek [Thu, 8 Jan 2026 11:48:20 +0000 (12:48 +0100)] 
[9.20] [CVE-2025-13878] sec: usr: Fix incorrect length checks for BRID and HHIT records

Malformed BRID and HHIT records could trigger an assertion failure. This has been fixed.

ISC would like to thank Vlatko Kosturjak from Marlink Cyber for bringing
this vulnerability to our attention.

Closes isc-projects/bind9#5616

Backport of MR isc-private/bind9!876

Merge branch '5616-confidential-brid-hhit-towire-9.20' into 'v9.20.18-release'

See merge request isc-private/bind9!894

4 months agoFix incorrect length checks for BRID and HHIT records
Mark Andrews [Sat, 1 Nov 2025 08:47:49 +0000 (04:47 -0400)] 
Fix incorrect length checks for BRID and HHIT records

Fix incorrect length checks in the towire_*() methods for BRID and HHIT
records to prevent assertion failures when trying to serve short
records.

(cherry picked from commit 14e299995f8f1dd8faeb7c5395a5a0c12b0f43f4)

4 months agochg: doc: Set up version for BIND 9.20.19
Nicki Křížek [Thu, 8 Jan 2026 09:40:06 +0000 (10:40 +0100)] 
chg: doc: Set up version for BIND 9.20.19

Merge branch 'nicki/set-up-version-for-bind-9.20.19' into 'bind-9.20'

See merge request isc-projects/bind9!11440

4 months agoUpdate BIND version to 9.20.19-dev
Nicki Křížek [Thu, 8 Jan 2026 09:38:59 +0000 (10:38 +0100)] 
Update BIND version to 9.20.19-dev

4 months ago[9.20] chg: ci: Don't overwrite JUnit file generated by pytest in post-processing
Štěpán Balážik [Wed, 7 Jan 2026 18:20:23 +0000 (18:20 +0000)] 
[9.20] chg: ci: Don't overwrite JUnit file generated by pytest in post-processing

When both input and output files are the same, it creates unnecesary
troubles in debugging issues with the JUnit files.

Keep the Pytest-generated file in the artifacts and output the checked
version as a new file.

Companion MR: https://gitlab.isc.org/isc-projects/bind9-qa/-/merge_requests/155

Backport of MR !11430

Merge branch 'backport-stepan/dont-overwrite-pytest-junit-xml-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!11431

4 months agoDon't overwrite JUnit files generated by the convert-trs-to-junit.py
Štěpán Balážik [Wed, 7 Jan 2026 17:35:56 +0000 (18:35 +0100)] 
Don't overwrite JUnit files generated by the convert-trs-to-junit.py

It makes debugging easier.

4 months agoGenerate, check the JUnit reports for the doctest job
Štěpán Balážik [Tue, 6 Jan 2026 15:42:34 +0000 (16:42 +0100)] 
Generate, check the JUnit reports for the doctest job

Pass it to GitLab for display.

(cherry picked from commit 0f2d0daabc47eaa5fbde2ceb0b30c35df9f9e255)

4 months agoDon't overwrite JUnit file generated by pytest in post-processing
Štěpán Balážik [Tue, 6 Jan 2026 11:03:04 +0000 (12:03 +0100)] 
Don't overwrite JUnit file generated by pytest in post-processing

When both input and output files are the same, it creates unnecesary
troubles in debugging issues with the JUnit files.

Keep the Pytest-generated file in the artifacts and output the checked
version as a new file.

(cherry picked from commit 1a85a27f54e270060c7dead8e227ad8cec43283a)

4 months agoUse git_clone_bind9-qa anchor in .system_test_common
Štěpán Balážik [Tue, 6 Jan 2026 14:12:25 +0000 (15:12 +0100)] 
Use git_clone_bind9-qa anchor in .system_test_common

This was missed in abecddb13afa3f8ad9611f1241a635fbe6b90818.

(cherry picked from commit af809329b3e31aa42851feea4dc0931bd219bd16)