Commit Graph

36699 Commits

Author SHA1 Message Date
Artem Boldariev
ffcb54211e TLS: do not ignore accept callback result
Before this change the TLS code would ignore the accept callback result,
and would not try to gracefully close the connection. This had not been
noticed, as it is not really required for DoH. Now the code tries to
shut down the TLS connection gracefully when accepting it is not
successful.
2022-07-12 14:40:22 +03:00
Artem Boldariev
0f9b6a7bc1 *_noresponse, tlsdns_listen_noalpn: csends == 1 is not guaranteed
This commit removes an assertion from the unit test which cannot be
guaranteed.

According to the test, exactly one client send must succeed. However,
it cannot really be guaranteed, as do not start to read data in the
accept callback on the server nor attach to the accepted handle. Thus,
we can expect the connection to be closed soon after we have returned
from the callback.

Interestingly enough, the test would pass just fine on TCP because:

a) there are fewer layers involved and thus there is less processing;

b) it is possible for the data to be sent and end up in an internal OS
socket buffer without being touched by an application's code on the
server. In such a case the client's write callback still would be
called successfully;

There is a chance for the test to succeed over TLS as well (as it
happily did before), but as the code has been changed to close unused
connections as soon as possible, the chance is far slimmer now.

What can be guaranteed is:

* cconnects == 1 (number client connections equals 1);
* saccepts == 1 (number of accepted connections equals 1).
2022-07-12 14:40:22 +03:00
Artem Boldariev
8585b92f98 TLSDNS: try pass incoming data to OpenSSL if there are any
Otherwise the code path will lead to a call to SSL_get_error()
returning SSL_ERROR_SSL, which in turn might lead to closing
connection to early in an unexpected way, as it is clearly not what is
intended.

The issue was found when working on loppmgr branch and appears to
be timing related as well. Might be responsible for some unexpected
transmission failures e.g. on zone transfers.
2022-07-12 14:40:22 +03:00
Artem Boldariev
fc74b15e67 TLS: bail out earlier when NM is stopping
In some operations - most prominently when establishing connection -
it might be beneficial to bail out earlier when the network manager
is stopping.

The issue is backported from loopmgr branch, where such a change is
not only beneficial, but required.
2022-07-12 14:40:22 +03:00
Artem Boldariev
ac4fb34f18 TLS: sometimes TCP conn. handle might be NULL on when connecting
In some cases - in particular, in case of errors, NULL might be passed
to a connection callback instead of a handle that could have led to
an abort. This commit ensures that such a situation will not occur.

The issue was found when working on the loopmgr branch.
2022-07-12 14:40:22 +03:00
Artem Boldariev
88524e26ec TLS: try to close sockets whenever there are no pending operations
This commit ensures that the underlying TCP socket of a TLS connection
gets closed earlier whenever there are no pending operations on it.

In the loop-manager branch, in some circumstances the connection
could have remained opened for far too long for no reason. This
commit ensures that will not happen.
2022-07-12 14:40:22 +03:00
Artem Boldariev
237ce05b89 TLS: Implement isc_nmhandle_setwritetimeout()
This commit adds a proper implementation of
isc_nmhandle_setwritetimeout() for TLS connections. Now it passes the
value to the underlying TCP handle.
2022-07-12 14:40:22 +03:00
Michal Nowak
56d9938328 Merge branch 'mnowak/alpine-3.16' into 'main'
Add Alpine Linux 3.16

See merge request isc-projects/bind9!6360
2022-07-12 11:10:28 +00:00
Michal Nowak
0d0ab3db10 Add Alpine Linux 3.16 2022-07-12 12:27:10 +02:00
Matthijs Mekking
0851ace0d3 Merge branch '3438-dnssec-policy-does-not-set-inline-signing' into 'main'
Fix inheritance for dnssec-policy when checking for inline-signing

Closes #3438

See merge request isc-projects/bind9!6541
2022-07-12 10:12:39 +00:00
Matthijs Mekking
689215a675 Add release note and change entry for #3438
Bug worth mentioning.
2022-07-12 11:29:39 +02:00
Matthijs Mekking
576b21b168 Inherit dnssec-policy in check for inline-signing
When dnssec-policy is used, and the zone is not dynamic, BIND will
assume that the zone is inline-signed. But the function responsible
for this did not inherit the dnssec-policy option from the view or
options level, and thus never enabled inline-signing, while the zone
should have been.

This is fixed by this commit.
2022-07-12 11:29:03 +02:00
Matthijs Mekking
efa8a4e88d Test setting of inline-signing with dnssec-policy
When dnssec-policy is used, and the zone is not dynamic, BIND will
assume that the zone is inline-signed. Add test cases to verify this.
2022-07-12 11:29:03 +02:00
Matthijs Mekking
ff65f07779 Fix kasp system test bugs
Fix a comment, ensuring the right parameters are used (zone is
parameter $3, not $2) and add view and policy parameters to the comment.

Fix the view tests and test the correct view (example3 instead of
example2).

Fix placement of "n=$((n+1)" for two test cases.
2022-07-12 11:29:03 +02:00
Mark Andrews
c33c947415 Merge branch '3389-unexpected-badkey-in-upforwd-system-test' into 'main'
Clone UPDATE message buffer before forwarding

Closes #3389

See merge request isc-projects/bind9!6388
2022-07-12 08:57:47 +00:00
Mark Andrews
09d8ed3970 Add CHANGES note for [GL #3389] 2022-07-12 17:14:11 +10:00
Mark Andrews
7a42417d61 Clone the message buffer before forwarding UPDATE messages
this prevents named forwarding a buffer that may have been over
written.
2022-07-12 17:13:24 +10:00
Mark Andrews
50a86e9119 Merge branch '3440-use-default_algorithm-more-often' into 'main'
Resolve "Use DEFAULT_ALGORITHM more often"

Closes #3440

See merge request isc-projects/bind9!6532
2022-07-12 03:46:28 +00:00
Mark Andrews
be88c583bd Add CHANGES not for [GL #3440] 2022-07-12 13:29:07 +10:00
Mark Andrews
459e6980e5 zonechecks: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
3f65c9cf85 wildcard: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
86b29606c3 views: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
93f7c7cdcd verify: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
5585909904 upforwd: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
9970d4317d unknown: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
73fd49f8bb synthfromdnssec: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
32337b9dbf staticstub: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
941b95edb0 smartsign: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
1861c3e503 rpz: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
b0e1d9b1b3 rootkeysentinel: use $DEFAULT_ALGORITHM 2022-07-12 13:29:07 +10:00
Mark Andrews
05ef8c81dd resolver: use $DEFAULT_ALGORITHM 2022-07-12 10:40:30 +10:00
Mark Andrews
e0e03602ba redirect: use $DEFAULT_ALGORITHM 2022-07-12 10:40:30 +10:00
Mark Andrews
6fd50b9fda pending: use $DEFAULT_ALGORITHM 2022-07-12 10:40:30 +10:00
Mark Andrews
c2d18567fc nsupdate: use $DEFAULT_ALGORITHM 2022-07-12 10:40:30 +10:00
Mark Andrews
78fa082999 mkeys: use $DEFAULT_ALGORITHM 2022-07-12 10:40:30 +10:00
Mark Andrews
ff95bafa39 mirror: use $DEFAULT_ALGORITHM 2022-07-12 10:40:29 +10:00
Mark Andrews
3f1dc83bfb metadata: use $DEFAULT_ALGORITHM 2022-07-12 10:40:29 +10:00
Mark Andrews
e3acddefd1 inline: use $DEFAULT_ALGORITHM 2022-07-12 10:40:29 +10:00
Mark Andrews
49de14cb9e dsdigest: use $DEFAULT_ALGORITHM 2022-07-12 10:40:29 +10:00
Mark Andrews
d0b0139c90 dnssec: use $DEFAULT_ALGORITHM 2022-07-12 10:40:29 +10:00
Mark Andrews
5cbf1e1598 dns64: use $DEFAULT_ALGORITHM 2022-07-12 10:40:29 +10:00
Mark Andrews
3419178bd2 chain: use $DEFAULT_ALGORITHM 2022-07-12 10:40:29 +10:00
Mark Andrews
6cf0b73ede cds: use $DEFAULT_ALGORITHM 2022-07-12 10:40:29 +10:00
Mark Andrews
bb810b0ac9 autosign: use $DEFAULT_ALGORITHM 2022-07-12 10:40:29 +10:00
Ondřej Surý
b7f603fd4b Merge branch '3423-fix-root-zone-compression' into 'main'
Don't compress in the rrset if compression was disabled

Closes #3423

See merge request isc-projects/bind9!6485
2022-07-11 11:53:15 +00:00
Ondřej Surý
51b0c3cbb8 Add CHANGES and release note for [GL #3423] 2022-07-11 12:26:37 +02:00
Mark Andrews
8dae4e415d Expand name compression unit test
The name compression unit test is expanded to check that the compressed
form matches the expected wire pattern.

Record owner names are compressed differently to rdata names by
calling dns_name_towire2 instead of dns_name_towire so check that
owner names are compressed correctly as well.
2022-07-11 12:26:15 +02:00
Ondřej Surý
ddad205092 Don't compress in the rrset if compression was disabled
Currently, when rrset is being compressed, the optimization has been put
in place to reuse offset to the previous name in the same rrset.  This
skips the check for non-improving compression and thus compresses the
root zone making the wireformat worse by one byte.

Additionally, when the compression has been disabled for the name, it
would be repeatedly added to the compression table because we act as if
the name was not found and the dns_compress_add() doesn't check for the
existing entry.

Change the dns_name_towire2() to always lookup the name in the
compression table to prevent adding duplicates, but don't use it neither
in the wireformat nor in the rrset cache.
2022-07-11 12:26:15 +02:00
Michał Kępień
01d46f57f9 Merge branch 'michal/set-up-version-and-release-notes-for-bind-9.19.4' into 'main'
Set up version and release notes for BIND 9.19.4

See merge request isc-projects/bind9!6538
2022-07-11 07:05:52 +00:00
Michał Kępień
680d1d29a4 Set up release notes for BIND 9.19.4 2022-07-11 08:49:38 +02:00