]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
5 years agoensure interlocked netmgr events run on worker[0]
Ondřej Surý [Thu, 6 May 2021 14:11:43 +0000 (16:11 +0200)] 
ensure interlocked netmgr events run on worker[0]

Network manager events that require interlock (pause, resume, listen)
are now always executed in the same worker thread, mgr->workers[0],
to prevent races.

"stoplistening" events no longer require interlock.

5 years agofix shutdown deadlocks
Evan Hunt [Wed, 5 May 2021 21:54:53 +0000 (14:54 -0700)] 
fix shutdown deadlocks

- ensure isc_nm_pause() and isc_nm_resume() work the same whether
  run from inside or outside of the netmgr.
- promote 'stop' events to the priority event level so they can
  run while the netmgr is pausing or paused.
- when pausing, drain the priority queue before acquiring an
  interlock; this prevents a deadlock when another thread is waiting
  for us to complete a task.
- release interlock after pausing, reacquire it when resuming, so
  that stop events can happen.

some incidental changes:
- use a function to enqueue pause and resume events (this was part of a
  different change attempt that didn't work out; I kept it because I
  thought was more readable).
- make mgr->nworkers a signed int to remove some annoying integer casts.

5 years agoUse barriers for netmgr synchronization
Ondřej Surý [Wed, 5 May 2021 09:51:39 +0000 (11:51 +0200)] 
Use barriers for netmgr synchronization

The netmgr listening, stoplistening, pausing and resuming functions
now use barriers for synchronization, which makes the code much simpler.

isc/barrier.h defines isc_barrier macros as a front-end for uv_barrier
on platforms where that works, and pthread_barrier where it doesn't
(including TSAN builds).

5 years agoRun isc__nm_http_stoplistening() synchronously in netmgr
Ondřej Surý [Thu, 6 May 2021 07:03:33 +0000 (09:03 +0200)] 
Run isc__nm_http_stoplistening() synchronously in netmgr

When isc__nm_http_stoplistening() is run from inside the netmgr, we need
to make sure it's run synchronously.  This commit is just a band-aid
though, as the desired behvaior for isc_nm_stoplistening() is not always
the same:

  1. When run from outside user of the interface, the call must be
     synchronous, e.g. the calling code expects the call to really stop
     listening on the interfaces.

  2. But if there's a call from listen<proto> when listening fails,
     that needs to be scheduled to run asynchronously, because
     isc_nm_listen<proto> is being run in a paused (interlocked)
     netmgr thread and we could get stuck.

The proper solution would be to make isc_nm_stoplistening()
behave like uv_close(), i.e., to have a proper callback.

5 years agoonly run tasks as privileged if taskmgr is in privileged mode
Evan Hunt [Fri, 7 May 2021 02:41:49 +0000 (19:41 -0700)] 
only run tasks as privileged if taskmgr is in privileged mode

all zone loading tasks have the privileged flag, but we only want
them to run as privileged tasks when the server is being initialized;
if we privilege them the rest of the time, the server may hang for a
long time after a reload/reconfig. so now we call isc_taskmgr_setmode()
to turn privileged execution mode on or off in the task manager.

isc_task_privileged() returns true if the task's privilege flag is
set *and* the taskmgr is in privileged execution mode. this is used
to determine in which netmgr event queue the task should be run.

5 years agoFix crash when allocating UDP socket fails on OpenBSD
Ondřej Surý [Wed, 5 May 2021 19:21:02 +0000 (21:21 +0200)] 
Fix crash when allocating UDP socket fails on OpenBSD

When socket() call fails, the UDP connect code would call the connectcb
with empty req->handle.  This has been fixed.

5 years agoDon't clear dig lookup if it was already cleared
Ondřej Surý [Tue, 4 May 2021 12:25:55 +0000 (14:25 +0200)] 
Don't clear dig lookup if it was already cleared

This workarounds couple of races where the current_lookup would be
already detached during shutting down the dig, but still processing the
pending reads.

5 years agoFix wrong query accounting in the connect function in dighost.c
Ondřej Surý [Tue, 27 Apr 2021 10:03:20 +0000 (12:03 +0200)] 
Fix wrong query accounting in the connect function in dighost.c

The start_udp() function didn't properly attach to the query and thus
a callback with ISC_R_CANCELED would end with wrong accounting on the
query object.

Usually, this doesn't happen because underlying libuv API
uv_udp_connect() is synchronous, but isc_nm_udpconnect() could return
ISC_R_CANCELED in case it's called while the netmgr is shutting down.

5 years agoMake the netmgr queue processing quantized
Ondřej Surý [Tue, 27 Apr 2021 10:03:34 +0000 (12:03 +0200)] 
Make the netmgr queue processing quantized

There was a theoretical possibility of clogging up the queue processing
with an endless loop where currently processing netievent would schedule
new netievent that would get processed immediately.  This wasn't such a
problem when only netmgr netievents were processed, but with the
addition of the tasks, there are at least two situation where this could
happen:

 1. In lib/dns/zone.c:setnsec3param() the task would get re-enqueued
    when the zone was not yet fully loaded.

 2. Tasks have internal quantum for maximum number of isc_events to be
    processed, when the task quantum is reached, the task would get
    rescheduled and then immediately processed by the netmgr queue
    processing.

As the isc_queue doesn't have a mechanism to atomically move the queue,
this commit adds a mechanism to quantize the queue, so enqueueing new
netievents will never stop processing other uv_loop_t events.
The default quantum size is 128.

Since the queue used in the network manager allows items to be enqueued
more than once, tasks are now reference-counted around task_ready()
and task_run(). task_ready() now has a public API wrapper,
isc_task_ready(), that the netmgr can use to reschedule processing
of a task if the quantum has been reached.

Incidental changes: Cleaned up some unused fields left in isc_task_t
and isc_taskmgr_t after the last refactoring, and changed atomic
flags to atomic_bools for easier manipulation.

5 years agoDestroy netmgr before destroying taskmgr
Ondřej Surý [Tue, 27 Apr 2021 08:28:40 +0000 (10:28 +0200)] 
Destroy netmgr before destroying taskmgr

With taskmgr running on top of netmgr, the ordering of how the tasks and
netmgr shutdown interacts was wrong as previously isc_taskmgr_destroy()
was waiting until all tasks were properly shutdown and detached.  This
responsibility was moved to netmgr, so we now need to do the following:

  1. shutdown all the tasks - this schedules all shutdown events onto
     the netmgr queue

  2. shutdown the netmgr - this also makes sure all the tasks and
     events are properly executed

  3. Shutdown the taskmgr - this now waits for all the tasks to finish
     running before returning

  4. Shutdown the netmgr - this call waits for all the netmgr netievents
     to finish before returning

This solves the race when the taskmgr object would be destroyed before
all the tasks were finished running in the netmgr loops.

5 years agoAdd new isc_managers API to simplify <*>mgr create/destroy
Ondřej Surý [Mon, 26 Apr 2021 22:07:43 +0000 (00:07 +0200)] 
Add new isc_managers API to simplify <*>mgr create/destroy

Previously, netmgr, taskmgr, timermgr and socketmgr all had their own
isc_<*>mgr_create() and isc_<*>mgr_destroy() functions.  The new
isc_managers_create() and isc_managers_destroy() fold all four into a
single function and makes sure the objects are created and destroy in
correct order.

Especially now, when taskmgr runs on top of netmgr, the correct order is
important and when the code was duplicated at many places it's easy to
make mistake.

The former isc_<*>mgr_create() and isc_<*>mgr_destroy() functions were
made private and a single call to isc_managers_create() and
isc_managers_destroy() is required at the program startup / shutdown.

5 years agoMerge branch 'artem/doh-tests-fix' into 'main'
Artem Boldariev [Fri, 7 May 2021 13:25:56 +0000 (13:25 +0000)] 
Merge branch 'artem/doh-tests-fix' into 'main'

Fix flawed DoH unit tests logic and some corner cases in the DoH code. Fix doh_test failure on FreeBSD 13.0

Closes #2632

See merge request isc-projects/bind9!5005

5 years agoDoH: close active server streams when finishing session
Artem Boldariev [Thu, 6 May 2021 13:44:09 +0000 (16:44 +0300)] 
DoH: close active server streams when finishing session

Under some circumstances a situation might occur when server-side
session gets finished while there are still active HTTP/2
streams. This would lead to isc_nm_httpsocket object leaks.

This commit fixes this behaviour as well as refactors failed_read_cb()
to allow better code reuse.

5 years agoFix crash in client side DoH code
Artem Boldariev [Thu, 6 May 2021 12:14:04 +0000 (15:14 +0300)] 
Fix crash in client side DoH code

This commit fixes a situation when a cstream object could get unlinked
from the list as a result of a cstream->read_cb call. Thus, unlinking
it after the call could crash the program.

5 years agoMake some TLS tests actually use quota
Artem Boldariev [Fri, 30 Apr 2021 13:06:09 +0000 (16:06 +0300)] 
Make some TLS tests actually use quota

A directive to check quota was missing from some of the TLS tests
which were supposed to test TLS code with quotas.

5 years agoTLS: cancel reading on the underlying TCP socket after (see below)
Artem Boldariev [Fri, 30 Apr 2021 12:55:21 +0000 (15:55 +0300)] 
TLS: cancel reading on the underlying TCP socket after (see below)

... the last handle has been detached after calling write
callback. That makes it possible to detach from the underlying socket
and not to keep the socket object alive for too long. This issue was
causing TLS tests with quota to fail because quota might not have been
detached on time (because it was still referenced by the underlying
TCP socket).

One could say that this commit is an ideological continuation of:

513cdb52ecd4e63566672217f7390574f68c4d2d.

5 years agoFix crashes in TLS when handling TLS shutdown messages
Artem Boldariev [Tue, 27 Apr 2021 10:41:57 +0000 (13:41 +0300)] 
Fix crashes in TLS when handling TLS shutdown messages

This commit fixes some situations which could appear in TLS code when
dealing with shutdown messages and lead to crashes.

5 years agoAvoid creating connect netievents during low level failures in HTTP
Artem Boldariev [Mon, 26 Apr 2021 19:52:59 +0000 (22:52 +0300)] 
Avoid creating connect netievents during low level failures in HTTP

This way we create less netievent objects, not bombarding NM with the
messages in case of numerous low-level errors (like too many open
files) in e.g. unit tests.

5 years agoAvoid creating httpclose netievents in case of low level failures
Artem Boldariev [Mon, 26 Apr 2021 18:04:06 +0000 (21:04 +0300)] 
Avoid creating httpclose netievents in case of low level failures

This way we create less load on NM workers by avoiding netievent
creation.

5 years agoAlways call TCP connect callback from within a worker context
Artem Boldariev [Fri, 23 Apr 2021 14:50:04 +0000 (17:50 +0300)] 
Always call TCP connect callback from within a worker context

This change ensures that a TCP connect callback is called from within
the context of a worker thread in case of a low-level error when
descriptors cannot be created (e.g. when there are too many open file
descriptors).

5 years agoGot rid of tlsconnect event and corresponding code
Artem Boldariev [Fri, 23 Apr 2021 14:30:59 +0000 (17:30 +0300)] 
Got rid of tlsconnect event and corresponding code

We do not need it since we decided to not return values from connect
functions.

5 years agoFinish HTTP session on write failure
Artem Boldariev [Wed, 21 Apr 2021 17:32:35 +0000 (20:32 +0300)] 
Finish HTTP session on write failure

Not doing so caused client-side code to not free file descriptors as
soon as possible, that was causing unit tests to fail.

5 years agoFix flawed DoH unit tests logic
Artem Boldariev [Wed, 21 Apr 2021 12:15:27 +0000 (15:15 +0300)] 
Fix flawed DoH unit tests logic

This commit fixes some logical mistakes in DoH unit tests logic,
causing them either to fail or not to do what they are intended to do.

5 years agoMerge branch 'mnowak/add-placeholder-for-issue-2671' into 'main'
Michal Nowak [Fri, 7 May 2021 11:15:42 +0000 (11:15 +0000)] 
Merge branch 'mnowak/add-placeholder-for-issue-2671' into 'main'

Add placeholder for #2671

See merge request isc-projects/bind9!5004

5 years agoAdd placeholder for #2671
Michal Nowak [Fri, 7 May 2021 10:08:40 +0000 (12:08 +0200)] 
Add placeholder for #2671

Issue #2671 was merged to 9.16 but a respective placeholder was not
added to "main".

5 years agoMerge branch '2603-test-dnssec-policy-none' into 'main'
Matthijs Mekking [Wed, 5 May 2021 17:15:58 +0000 (17:15 +0000)] 
Merge branch '2603-test-dnssec-policy-none' into 'main'

Check zonefile is untouched if dnssec-policy none

Closes #2603

See merge request isc-projects/bind9!4888

5 years agoUse isdigit instead of checking character range
Matthijs Mekking [Wed, 14 Apr 2021 07:19:20 +0000 (09:19 +0200)] 
Use isdigit instead of checking character range

When looking for key files, we could use isdigit rather than checking
if the character is within the range [0-9].

Use (unsigned char) cast to ensure the value is representable in the
unsigned char type (as suggested by the isdigit manpage).

Change " & 0xff" occurrences to the recommended (unsigned char) type
cast.

5 years agoChanges and release notes for [#2603]
Matthijs Mekking [Tue, 13 Apr 2021 15:00:49 +0000 (17:00 +0200)] 
Changes and release notes for [#2603]

5 years agoCheck for filename clashes /w dnssec-policy zones
Matthijs Mekking [Tue, 13 Apr 2021 14:45:16 +0000 (16:45 +0200)] 
Check for filename clashes /w dnssec-policy zones

Just like with dynamic and/or inline-signing zones, check if no two
or more zone configurations set the same filename. In these cases,
the zone files are not read-only and named-checkconf should catch
a configuration where multiple zone statements write to the same file.

Add some bad configuration tests where KASP zones reference the same
zone file.

Update the good-kasp test to allow for two zones configure the same
file name, dnssec-policy none.

5 years agoCheck zonefile is untouched if dnssec-policy none
Matthijs Mekking [Tue, 13 Apr 2021 07:38:14 +0000 (09:38 +0200)] 
Check zonefile is untouched if dnssec-policy none

Make sure no DNSSEC contents are added to the zonefile if dnssec-policy
is set to "none" (and no .state files exist for the zone).

5 years agoMerge branch '2670-always-set-rewrite-when-compacting-a-version-1-journal' into ...
Mark Andrews [Wed, 5 May 2021 13:33:55 +0000 (13:33 +0000)] 
Merge branch '2670-always-set-rewrite-when-compacting-a-version-1-journal' into 'main'

Resolve "Always set 'rewrite' when compacting a version 1 journal."

Closes #2670

See merge request isc-projects/bind9!4985

5 years agoAdd release note for [GL #2670]
Mark Andrews [Wed, 5 May 2021 03:03:42 +0000 (13:03 +1000)] 
Add release note for [GL #2670]

5 years agoAdd CHANGES note for [GL #2670]
Mark Andrews [Wed, 5 May 2021 03:01:26 +0000 (13:01 +1000)] 
Add CHANGES note for [GL #2670]

5 years agoCheck journal compaction
Mark Andrews [Tue, 4 May 2021 07:55:49 +0000 (17:55 +1000)] 
Check journal compaction

5 years agoAlways perform a re-write when processing a version 1 journal
Mark Andrews [Tue, 4 May 2021 07:22:56 +0000 (17:22 +1000)] 
Always perform a re-write when processing a version 1 journal

version 1 journals may have a mix of type 1 and type 2 transaction
headers so always use the recovery code.

5 years agoAllow named-journalprint to compact journals at a given serial
Mark Andrews [Tue, 4 May 2021 07:20:26 +0000 (17:20 +1000)] 
Allow named-journalprint to compact journals at a given serial

5 years agoMerge branch 'matthijs-follow-up-2596' into 'main'
Matthijs Mekking [Wed, 5 May 2021 10:48:38 +0000 (10:48 +0000)] 
Merge branch 'matthijs-follow-up-2596' into 'main'

Remove double "insecure" check

See merge request isc-projects/bind9!4997

5 years agoRemove double "insecure" check
Matthijs Mekking [Wed, 5 May 2021 10:45:47 +0000 (12:45 +0200)] 
Remove double "insecure" check

This was a conflict between dba13d280aacb1ee52de54b0607b3beb4ff1aa0e
and 636ff1e15cb15db9252bd664a6f051761db824ca.

5 years agoMerge branch '2596-dnssec-policy-keys-inaccessible' into 'main'
Matthijs Mekking [Wed, 5 May 2021 10:33:46 +0000 (10:33 +0000)] 
Merge branch '2596-dnssec-policy-keys-inaccessible' into 'main'

Don't roll keys when the private key file is offline

Closes #2596

See merge request isc-projects/bind9!4885

5 years agoNo longer need to strcmp for "none"
Matthijs Mekking [Tue, 4 May 2021 07:49:14 +0000 (09:49 +0200)] 
No longer need to strcmp for "none"

When we introduced "dnssec-policy insecure" we could have removed the
'strcmp' check for "none", because if it was set to "none", the 'kasp'
variable would have been set to NULL.

5 years agoChanges and release notes for [#2596]
Matthijs Mekking [Mon, 12 Apr 2021 13:57:38 +0000 (15:57 +0200)] 
Changes and release notes for [#2596]

5 years agoAdd kasp tests for offline keys
Matthijs Mekking [Mon, 12 Apr 2021 13:26:34 +0000 (15:26 +0200)] 
Add kasp tests for offline keys

Add a test for default.kasp that if we remove the private key file,
no successor key is created for it. We need to update the kasp script
to deal with a missing private key. If this is the case, skip checks
for private key files.

Add a test with a zone for which the private key of the ZSK is missing.

Add a test with a zone for which the private key of the KSK is missing.

5 years agoUpdate smart signing when key is offline
Matthijs Mekking [Mon, 12 Apr 2021 12:45:31 +0000 (14:45 +0200)] 
Update smart signing when key is offline

BIND 9 is smart about when to sign with what key. If a key is offline,
BIND will delete the old signature anyway if there is another key to
sign the RRset with.

With KASP we don't want to fallback to the KSK if the ZSK is missing,
only for the SOA RRset. If the KSK is missing, but we do have a ZSK,
deleting the signature is fine. Otherwise it depends on if we use KASP
or not. Update the 'delsig_ok' function to reflect that.

5 years agoDon't roll offline keys
Matthijs Mekking [Mon, 12 Apr 2021 12:40:46 +0000 (14:40 +0200)] 
Don't roll offline keys

When checking the current DNSSEC state against the policy, consider
offline keys. If we didn't found an active key, check if the key is
offline by checking the public key list. If there is a match in the
public key list (the key data is retrieved from the .key and the
.state files), treat the key as offline and don't create a successor
key for it.

5 years agorndc dnssec -status should include offline keys
Matthijs Mekking [Thu, 8 Apr 2021 10:01:32 +0000 (12:01 +0200)] 
rndc dnssec -status should include offline keys

The rndc command 'dnssec -status' only considered keys from
'dns_dnssec_findmatchingkeys' which only includes keys with accessible
private keys. Change it so that offline keys are also listed in the
status.

5 years agoTry to read state when reading keylist from rdata
Matthijs Mekking [Thu, 8 Apr 2021 09:35:03 +0000 (11:35 +0200)] 
Try to read state when reading keylist from rdata

The function 'dns_dnssec_keylistfromrdataset()' creates a keylist from
the DNSKEY RRset. If we attempt to read the private key, we also store
the key state. However, if the private key is offline, the key state
will not be stored. To fix this, first attempt to read the public key
file. If then reading the private key file fails, and we do have a
public key, add that to the keylist, with appropriate state. If we
also failed to read the public key file, add the DNSKEY to the keylist,
as we did before.

5 years agoWhen reading public key from file, also read state
Matthijs Mekking [Thu, 8 Apr 2021 09:32:48 +0000 (11:32 +0200)] 
When reading public key from file, also read state

The 'dst_key_fromnamedfile()' function did not read and store the
key state from the .state file when reading a public key file.

5 years agoFix a kasp lock issue
Matthijs Mekking [Tue, 6 Apr 2021 09:31:35 +0000 (11:31 +0200)] 
Fix a kasp lock issue

The kasp lock would stay locked if 'dns_keymgr_run' failed.

5 years agoMerge branch '2678-named-checkconf-doesn-t-catch-redefinition-of-dnssec-policy-insecu...
Mark Andrews [Wed, 5 May 2021 07:03:12 +0000 (07:03 +0000)] 
Merge branch '2678-named-checkconf-doesn-t-catch-redefinition-of-dnssec-policy-insecure' into 'main'

Resolve "named-checkconf doesn't catch redefinition of dnssec-policy insecure"

Closes #2678

See merge request isc-projects/bind9!4994

5 years agonamed-checkconf now detects redefinition of dnssec-policy 'insecure'
Mark Andrews [Wed, 5 May 2021 01:23:02 +0000 (11:23 +1000)] 
named-checkconf now detects redefinition of dnssec-policy 'insecure'

5 years agoMerge branch '2536-inline-signing-documentation-doesn-t-match-reality' into 'main'
Mark Andrews [Wed, 5 May 2021 00:17:40 +0000 (00:17 +0000)] 
Merge branch '2536-inline-signing-documentation-doesn-t-match-reality' into 'main'

Resolve "inline-signing documentation doesn't match reality"

Closes #2536

See merge request isc-projects/bind9!4751

5 years agocheckconf tests for inline-signing at options/view
Matthijs Mekking [Tue, 4 May 2021 08:16:59 +0000 (10:16 +0200)] 
checkconf tests for inline-signing at options/view

5 years agoAdd Release note for [GL #2536]
Mark Andrews [Thu, 25 Feb 2021 23:10:04 +0000 (10:10 +1100)] 
Add Release note for [GL #2536]

5 years agoAdd CHANGES note for [GL #2536]
Mark Andrews [Thu, 25 Feb 2021 23:06:17 +0000 (10:06 +1100)] 
Add CHANGES note for [GL #2536]

5 years agoinline-signing should have been in zone_only_clauses
Mark Andrews [Thu, 25 Feb 2021 23:00:09 +0000 (10:00 +1100)] 
inline-signing should have been in zone_only_clauses

5 years agoMerge branch '2675-wrong-rfc-reference-in-name-c' into 'main'
Ondřej Surý [Tue, 4 May 2021 15:22:49 +0000 (15:22 +0000)] 
Merge branch '2675-wrong-rfc-reference-in-name-c' into 'main'

Fix RFC292 -> RFC952 typo

Closes #2675

See merge request isc-projects/bind9!4990

5 years agoFix RFC292 -> RFC952 typo
Ondřej Surý [Tue, 4 May 2021 15:21:52 +0000 (17:21 +0200)] 
Fix RFC292 -> RFC952 typo

5 years agoMerge branch '2624-kasp-test-failure-job-1630205' into 'main'
Matthijs Mekking [Tue, 4 May 2021 08:24:43 +0000 (08:24 +0000)] 
Merge branch '2624-kasp-test-failure-job-1630205' into 'main'

Fix intermittent kasp test failure

Closes #2624

See merge request isc-projects/bind9!4884

5 years agoFix intermittent kasp test failure
Matthijs Mekking [Mon, 12 Apr 2021 09:45:06 +0000 (11:45 +0200)] 
Fix intermittent kasp test failure

The kasp system test performs for each zone a couple of checks to make
sure the zone is signed correctly. To avoid test failures caused by
timing issues, there is first a check to ensure the zone is done
signing, 'wait_for_done_signing'. This function waits with the DNSSEC
checks until a "zone_rekey done" log message is seen for a specific
key.

Unfortunately this is not sufficient to avoid test failures due to
timing issues, because there is a small amount of time in between this
log message and the newly signed zone actually being served.

Therefore, in 'check_apex', retry for three seconds the DNSKEY query
check. After that, additional checks should pass without retries,
because at that point we know for sure the zone has been resigned with
the expected keys.

Also reduce the number of redundant 'check_signatures'

5 years agoMerge branch '2621-pull-request-to-fix-rdnc-addzone-doc' into 'main'
Mark Andrews [Tue, 4 May 2021 02:37:51 +0000 (02:37 +0000)] 
Merge branch '2621-pull-request-to-fix-rdnc-addzone-doc' into 'main'

Resolve "Pull request to fix rdnc-addzone doc"

Closes #2621

See merge request isc-projects/bind9!4882

5 years agoRemove spurious $ and \ in addzone example
Mark Andrews [Mon, 12 Apr 2021 03:57:56 +0000 (03:57 +0000)] 
Remove spurious $ and \ in addzone example

5 years agoMerge branch 'ondrej/add-backtrace-support-for-Windows' into 'main'
Ondřej Surý [Mon, 3 May 2021 18:40:30 +0000 (18:40 +0000)] 
Merge branch 'ondrej/add-backtrace-support-for-Windows' into 'main'

Add support for generating backtraces on Windows

See merge request isc-projects/bind9!4982

5 years agoAdd support for generating backtraces on Windows
Ondřej Surý [Tue, 27 Apr 2021 14:20:03 +0000 (16:20 +0200)] 
Add support for generating backtraces on Windows

This commit adds support for generating backtraces on Windows and
refactors the isc_backtrace API to match the Linux/BSD API (without
the isc_ prefix)

 * isc_backtrace_gettrace() was renamed to isc_backtrace(), the third
   argument was removed and the return type was changed to int
 * isc_backtrace_symbols() was added
 * isc_backtrace_symbols_fd() was added and used as appropriate

5 years agoMerge branch 'ondrej/add-nanosleep-and-usleep-windows-shims' into 'main'
Ondřej Surý [Mon, 3 May 2021 18:25:55 +0000 (18:25 +0000)] 
Merge branch 'ondrej/add-nanosleep-and-usleep-windows-shims' into 'main'

Add nanosleep and usleep Windows shims

See merge request isc-projects/bind9!4981

5 years agoMerge branch 'ondrej/replace-CreateThreads-with-isc_thread_create' into 'main'
Ondřej Surý [Mon, 3 May 2021 18:24:06 +0000 (18:24 +0000)] 
Merge branch 'ondrej/replace-CreateThreads-with-isc_thread_create' into 'main'

Add trampoline around iocompletionport_createthreads()

See merge request isc-projects/bind9!4980

5 years agoUse uv_sleep in the netmgr code
Ondřej Surý [Mon, 3 May 2021 10:10:03 +0000 (12:10 +0200)] 
Use uv_sleep in the netmgr code

libuv added uv_sleep(unsigned int msec) to the API since 1.34.0.  Use that in
the netmgr code and define usleep based shim for libuv << 1.34.0.

5 years agoAdd nanosleep and usleep Windows shims
Ondřej Surý [Tue, 27 Apr 2021 08:16:01 +0000 (10:16 +0200)] 
Add nanosleep and usleep Windows shims

This commit adds POSIX nanosleep() and usleep() shim implementation for
Windows to help implementors use less #ifdef _WIN32 in the code.

5 years agoAdd trampoline around iocompletionport_createthreads()
Ondřej Surý [Thu, 29 Apr 2021 12:43:45 +0000 (14:43 +0200)] 
Add trampoline around iocompletionport_createthreads()

On Windows, the iocompletionport_createthreads() didn't use
isc_thread_create() to create new threads for processing IO, but just a
simple CreateThread() function that completely circumvent the
isc_trampoline mechanism to initialize global isc_tid_v.  This lead to
segmentation fault in isc_hp API because '-1' isn't valid index to the
hazard pointer array.

This commit changes the iocompletionport_createthreads() to use
isc_thread_create() instead of CreateThread() to properly initialize
isc_tid_v.

5 years agoMerge branch '2627-tlsstream-c-warning-comparison-of-integer-expressions-of-different...
Diego dos Santos Fronza [Mon, 3 May 2021 17:03:44 +0000 (17:03 +0000)] 
Merge branch '2627-tlsstream-c-warning-comparison-of-integer-expressions-of-different-signedness' into 'main'

Resolve "tlsstream.c: warning: comparison of integer expressions of different signedness"

Closes #2627

See merge request isc-projects/bind9!4906

5 years agoAddress comparison of integers with different signedess
Diego Fronza [Fri, 16 Apr 2021 21:33:40 +0000 (18:33 -0300)] 
Address comparison of integers with different signedess

5 years agoMerge branch 'matthijs-nsupdate-update_test' into 'main'
Matthijs Mekking [Fri, 30 Apr 2021 12:26:12 +0000 (12:26 +0000)] 
Merge branch 'matthijs-nsupdate-update_test' into 'main'

Update nsupdate test

See merge request isc-projects/bind9!4975

5 years agoUpdate nsupdate test
Matthijs Mekking [Fri, 30 Apr 2021 09:03:46 +0000 (11:03 +0200)] 
Update nsupdate test

The nsupdate system test did not record failures from the
'update_test.pl' Perl script. This was because the 'ret' value was
not being saved outside the '{ $PERL ... || ret=1 } cat_i' scope.

Change this piece to store the output in a separate file and then
cat its contents. Now the 'ret' value is being saved.

Also record failures in 'update_test.pl' if sending the update
failed.

Add missing 'n' incrementals to 'nsupdate/test.sh' to keep track of
test numbers.

5 years agoMerge branch 'pspacek/rtd-sphinx-fix' into 'main'
Petr Špaček [Fri, 30 Apr 2021 10:57:30 +0000 (10:57 +0000)] 
Merge branch 'pspacek/rtd-sphinx-fix' into 'main'

Fix ARM build on readthedocs.org

See merge request isc-projects/bind9!4968

5 years agoFix ARM build on readthedocs.org
Petr Špaček [Thu, 29 Apr 2021 15:13:02 +0000 (17:13 +0200)] 
Fix ARM build on readthedocs.org

By default readthedocs.org uses Sphinx 1.8.5, but MR !4563 has
introduced depedency on ReferenceRole class which is available only in
Sphinx 2.0.0.

Path to doc/arm/requirements.txt needs to be configured in
readthedocs.org.

5 years agoMerge branch '2645-dnssec-polic-insecure' into 'main'
Matthijs Mekking [Fri, 30 Apr 2021 10:10:32 +0000 (10:10 +0000)] 
Merge branch '2645-dnssec-polic-insecure' into 'main'

Add built-in dnssec-policy "insecure"

Closes #2645

See merge request isc-projects/bind9!4929

5 years agoAdd kasp test policy goes straight to "none"
Matthijs Mekking [Mon, 26 Apr 2021 12:24:59 +0000 (14:24 +0200)] 
Add kasp test policy goes straight to "none"

Add a test case when a dnssec-policy is reconfigured to "none",
without setting it to "insecure" first. This is unsupported behavior,
but we want to make sure the behavior is somewhat expected. The
zone should remain signed (but will go bogus once the signatures
expire).

5 years agoRelease notes and changes for [#2645]
Matthijs Mekking [Wed, 21 Apr 2021 14:48:24 +0000 (16:48 +0200)] 
Release notes and changes for [#2645]

The feature "going insecure gracefully" has been changed.

5 years agoUpdate documentation with "insecure" policy
Matthijs Mekking [Wed, 21 Apr 2021 14:39:28 +0000 (16:39 +0200)] 
Update documentation with "insecure" policy

Update the ARM to mention the new built-in "insecure" policy.  Update
the DNSSEC guide recipe "Revert to unsigned" to add the additional
step of reconfiguring the zone to "insecure" (instead of immediately
set it to "none").

5 years agoAdd test for "insecure" policy
Matthijs Mekking [Wed, 21 Apr 2021 14:37:17 +0000 (16:37 +0200)] 
Add test for "insecure" policy

While it is meant to be used for transitioning a zone to insecure,
add a test case where a zone uses the "insecure" policy immediately.

The zone will go through DNSSEC maintenance, but the outcome should
be the same as 'dnssec-policy none;', that is the zone should be
unsigned.

5 years agoUpdate kasp tests to "insecure" policy
Matthijs Mekking [Wed, 21 Apr 2021 14:33:04 +0000 (16:33 +0200)] 
Update kasp tests to "insecure" policy

The tests for going insecure should be changed to use the built-in
"insecure" policy.

The function that checks dnssec status output should again check
for the special case "none".

5 years agoAdd built-in dnssec-policy "insecure"
Matthijs Mekking [Wed, 21 Apr 2021 14:09:06 +0000 (16:09 +0200)] 
Add built-in dnssec-policy "insecure"

Add a new built-in policy "insecure", to be used to gracefully unsign
a zone. Previously you could just remove the 'dnssec-policy'
configuration from your zone statement, or remove it.

The built-in policy "none" (or not configured) now actually means
no DNSSEC maintenance for the corresponding zone. So if you
immediately reconfigure your zone from whatever policy to "none",
your zone will temporarily be seen as bogus by validating resolvers.

This means we can remove the functions 'dns_zone_use_kasp()' and
'dns_zone_secure_to_insecure()' again. We also no longer have to
check for the existence of key state files to figure out if a zone
is transitioning to insecure.

5 years agoMerge branch '2668-handle-net-dns-versions-that-don-t-support-nsec3param' into 'main'
Mark Andrews [Fri, 30 Apr 2021 06:25:39 +0000 (06:25 +0000)] 
Merge branch '2668-handle-net-dns-versions-that-don-t-support-nsec3param' into 'main'

Resolve "Handle Net::DNS versions that don't support NSEC3PARAM"

Closes #2668

See merge request isc-projects/bind9!4971

5 years agoNSEC3PARAM support was added to Net::DNS in 1.00_06
Mark Andrews [Fri, 30 Apr 2021 02:48:37 +0000 (12:48 +1000)] 
NSEC3PARAM support was added to Net::DNS in 1.00_06

Require 1.01 or later to when adding a NSEC3PARAM records.

5 years agoMerge branch '2658-update-zonemd-now-that-rfc-8976-has-been-issued' into 'main'
Mark Andrews [Fri, 30 Apr 2021 01:08:46 +0000 (01:08 +0000)] 
Merge branch '2658-update-zonemd-now-that-rfc-8976-has-been-issued' into 'main'

Resolve "Update ZONEMD now that RFC 8976 has been issued."

Closes #2658

See merge request isc-projects/bind9!4946

5 years agoUpdate ZONEMD to match RFC 8976
Mark Andrews [Wed, 28 Apr 2021 02:05:02 +0000 (12:05 +1000)] 
Update ZONEMD to match RFC 8976

* The location of the digest type field has changed to where the
  reserved field was.
* The reserved field is now called scheme and is where the digest
  type field was.
* Digest type 2 has been defined (SHA256).

5 years agoMerge branch 'mnowak/configure-with-enable-dnstap-by-default' into 'main'
Michal Nowak [Thu, 29 Apr 2021 13:58:33 +0000 (13:58 +0000)] 
Merge branch 'mnowak/configure-with-enable-dnstap-by-default' into 'main'

Configure with --enable-dnstap by default

See merge request isc-projects/bind9!4618

5 years agoSuppress TSAN errors from libfstrm.so
Michal Nowak [Wed, 10 Feb 2021 13:21:08 +0000 (14:21 +0100)] 
Suppress TSAN errors from libfstrm.so

dnstap_test produces TSAN errors which originate in libfstrm.so. Unless
libfstrm is TSAN clean or a workaround is placed in libfstrm sources,
suppressing TSAN coming from libfstrm is necessary to test DNSTAP under
TSAN.

5 years agoConfigure with --enable-dnstap by default
Michal Nowak [Tue, 26 Jan 2021 16:57:34 +0000 (17:57 +0100)] 
Configure with --enable-dnstap by default

All platforms but OpenBSD have dnstap dependencies readily in their
respective repositories, and dnstap thus can be tested there. Given that
majority of images have dnstap dependencies available, it seems fitting
to make dnstap enabled by default.

5 years agoMerge branch 'mnowak/disable-pytest-cacheprovider-plugin' into 'main'
Michal Nowak [Thu, 29 Apr 2021 13:43:10 +0000 (13:43 +0000)] 
Merge branch 'mnowak/disable-pytest-cacheprovider-plugin' into 'main'

Disable pytest cacheprovider plugin in CI

See merge request isc-projects/bind9!4961

5 years agoDisable pytest cacheprovider plugin in CI
Michal Nowak [Thu, 29 Apr 2021 09:19:13 +0000 (11:19 +0200)] 
Disable pytest cacheprovider plugin in CI

The pytest "cacheprovider" plugin produces a .cache/v/cache/lastfailed
file, which holds a Python dictionary structure with failed tests.
However, on Ubuntu 16.04 (Xenial) the file is created even though the
test passed and the file contains just an empty dictionary ("{}").

Given that we are not interested in this feature, disabling the
"cacheprovider" plugin globally and removing per-test removals of the
.cache directory seems like the best course of action.

5 years agoMerge branch '2445-nsec3-iterations-resolver' into 'main'
Matthijs Mekking [Thu, 29 Apr 2021 13:09:30 +0000 (13:09 +0000)] 
Merge branch '2445-nsec3-iterations-resolver' into 'main'

Resolve "NSEC3 iterations"

Closes #2445

See merge request isc-projects/bind9!4957

5 years agoAdd release note for [GL #2445]
Mark Andrews [Wed, 21 Apr 2021 03:28:16 +0000 (13:28 +1000)] 
Add release note for [GL #2445]

5 years agoAdd CHANGES for [GL #2445]
Mark Andrews [Wed, 21 Apr 2021 03:27:23 +0000 (13:27 +1000)] 
Add CHANGES for [GL #2445]

5 years agoCheck insecure responses returned with too many NSEC3 iterations
Mark Andrews [Wed, 17 Feb 2021 05:33:49 +0000 (16:33 +1100)] 
Check insecure responses returned with too many NSEC3 iterations

5 years agoMark DNSSEC responses with NSEC3 records that exceed 150 as insecure
Mark Andrews [Wed, 17 Feb 2021 05:33:49 +0000 (16:33 +1100)] 
Mark DNSSEC responses with NSEC3 records that exceed 150 as insecure

5 years agoMerge branch '2372-add-hyperlink-to-gl-xxxx-labels-in-documentation' into 'main'
Michał Kępień [Thu, 29 Apr 2021 11:35:33 +0000 (11:35 +0000)] 
Merge branch '2372-add-hyperlink-to-gl-xxxx-labels-in-documentation' into 'main'

Resolve "Add hyperlink to [GL XXXX] labels in documentation"

Closes #2372

See merge request isc-projects/bind9!4563

5 years agoUpdate Danger check for GitLab references
Michal Nowak [Thu, 29 Apr 2021 11:24:21 +0000 (13:24 +0200)] 
Update Danger check for GitLab references

Release notes now employ a custom :gl: Sphinx role for linking to GitLab
issues/MRs.  Tweak the relevant Danger checks to account for that.

5 years agoAdd a Sphinx role for linking GitLab issues/MRs
Michał Kępień [Thu, 29 Apr 2021 11:24:21 +0000 (13:24 +0200)] 
Add a Sphinx role for linking GitLab issues/MRs

Define a :gl: Sphinx role that takes a GitLab issue/MR number as an
argument and creates a hyperlink to the relevant ISC GitLab URL.  This
makes it easy to reach ISC GitLab pages directly from the release notes.

Make all GitLab references in the release notes use the new Sphinx role.

5 years agoMake use of the :rfc: role in the ARM consistent
Michal Nowak [Thu, 29 Apr 2021 11:24:21 +0000 (13:24 +0200)] 
Make use of the :rfc: role in the ARM consistent

Make sure all RFC references in the ARM use the stock :rfc: Sphinx role.

5 years agoMerge branch 'ondrej/use-sigabrt-from-start.pl' into 'main'
Ondřej Surý [Thu, 29 Apr 2021 10:44:26 +0000 (10:44 +0000)] 
Merge branch 'ondrej/use-sigabrt-from-start.pl' into 'main'

Use SIGABRT instead of SIGKILL to produce cores on failed start

See merge request isc-projects/bind9!4928