1 1.1 christos .. Copyright (C) Internet Systems Consortium, Inc. ("ISC") 2 1.1 christos .. 3 1.1 christos .. SPDX-License-Identifier: MPL-2.0 4 1.1 christos .. 5 1.1 christos .. This Source Code Form is subject to the terms of the Mozilla Public 6 1.1 christos .. License, v. 2.0. If a copy of the MPL was not distributed with this 7 1.1 christos .. file, you can obtain one at https://mozilla.org/MPL/2.0/. 8 1.1 christos .. 9 1.1 christos .. See the COPYRIGHT file distributed with this work for additional 10 1.1 christos .. information regarding copyright ownership. 11 1.1 christos 12 1.1 christos BIND 9.20.17 13 1.1 christos ------------ 14 1.1 christos 15 1.1 christos New Features 16 1.1 christos ~~~~~~~~~~~~ 17 1.1 christos 18 1.1 christos - Add spatch to detect implicit bool/int/result cast. ``02be363d1f`` 19 1.1 christos 20 1.1 christos Detection of implicit cast from a boolean into an int, or an 21 1.1 christos isc_result_t into a boolean (either in an assignement or return 22 1.1 christos position). 23 1.1 christos 24 1.1 christos If such pattern is found, a warning comment is added into the code 25 1.1 christos (and the CI will fails) so the error can be spotted and manually 26 1.1 christos fixed. :gl:`!11237` 27 1.1 christos 28 1.1 christos Feature Changes 29 1.1 christos ~~~~~~~~~~~~~~~ 30 1.1 christos 31 1.1 christos - Use atomics for CMM_{LOAD,STORE}_SHARED with ThreadSanitizer. 32 1.1 christos ``94fa721705`` 33 1.1 christos 34 1.1 christos Upstream has removed the atomics implementation of CMM_LOAD_SHARED and 35 1.1 christos CMM_STORE_SHARED as these can be used also with non-stdatomics types. 36 1.1 christos As we only use the CMM api with stdatomics types, we can restore the 37 1.1 christos previous behaviour to prevent ThreadSanitizer warnings. :gl:`#5660` 38 1.1 christos :gl:`!11290` 39 1.1 christos 40 1.1 christos - Provide more information when the memory allocation fails. 41 1.1 christos ``6749725610`` 42 1.1 christos 43 1.1 christos Provide more information about the failure when the memory allocation 44 1.1 christos fails. :gl:`!11304` 45 1.1 christos 46 1.1 christos - Reduce the number of outgoing queries. ``457b470e96`` 47 1.1 christos 48 1.1 christos Reduces the number of outgoing queries when resolving the nameservers 49 1.1 christos for delegation points. This helps the DNS resolver with cold cache 50 1.1 christos resolve client queries with complex delegation chains and 51 1.1 christos redirections. :gl:`!11258` 52 1.1 christos 53 1.1 christos Bug Fixes 54 1.1 christos ~~~~~~~~~ 55 1.1 christos 56 1.1 christos - Fix the spurious timeouts while resolving names. ``d96cf874fb`` 57 1.1 christos 58 1.1 christos Sometimes the loops in the resolving (e.g. to resolve or validate 59 1.1 christos ns1.example.com we need to resolve ns1.example.com) were not properly 60 1.1 christos detected leading to spurious 10 seconds delay. This has been fixed 61 1.1 christos and such loops are properly detected. :gl:`#3033`, #5578 :gl:`!11298` 62 1.1 christos 63 1.1 christos - Fix bug where zone switches from NSEC3 to NSEC after retransfer. 64 1.1 christos ``3b40ffbf83`` 65 1.1 christos 66 1.1 christos When a zone is re-transferred, but the zone journal on an 67 1.1 christos inline-signing secondary is out of sync, the zone could fall back to 68 1.1 christos using NSEC records instead of NSEC3. This has been fixed. :gl:`#5527` 69 1.1 christos :gl:`!11274` 70 1.1 christos 71 1.1 christos - Attach socket before async streamdns_resume_processing. ``bb9451c73f`` 72 1.1 christos 73 1.1 christos Call to `streamdns_resume_processing` is asynchronous but the socket 74 1.1 christos passed as argument is not attached when scheduling the call. 75 1.1 christos 76 1.1 christos While there is no reproducible way (so far) to make the socket 77 1.1 christos reference number down to 0 before `streamdns_resume_processing` is 78 1.1 christos called, attach the socket before scheduling the call. This guard 79 1.1 christos against an hypothetic case where, for some reasons, the socket 80 1.1 christos refcount would reach 0, and be freed from memory when 81 1.1 christos `streamdns_resume_processing` is called. :gl:`#5620` :gl:`!11260` 82 1.1 christos 83 1.1 christos - AMTRELAY type 0 presentation format handling was wrong. ``adf104a063`` 84 1.1 christos 85 1.1 christos RFC 8777 specifies a placeholder value of "." for the gateway field 86 1.1 christos when the gateway type is 0 (no gateway). This was not being checked 87 1.1 christos for nor emitted when displaying the record. This has been corrected. 88 1.1 christos 89 1.1 christos Instances of this record will need the placeholder period added to 90 1.1 christos them when upgrading. :gl:`#5639` :gl:`!11255` 91 1.1 christos 92 1.1 christos - Fix parsing bug in remote-servers with key or tls. ``d9400c5967`` 93 1.1 christos 94 1.1 christos The :any:`remote-servers` clause enable the following pattern using a 95 1.1 christos named ``server-list``: 96 1.1 christos 97 1.1 christos remote-servers a { 1.2.3.4; ... }; remote-servers b { a key 98 1.1 christos foo; }; 99 1.1 christos 100 1.1 christos However, such configuration was wrongly rejected, with an "unexpected 101 1.1 christos token 'foo'" error. Such configuration is now accepted. :gl:`#5646` 102 1.1 christos :gl:`!11300` 103 1.1 christos 104 1.1 christos - Fix TLS contexts cache object usage bug in the resolver. 105 1.1 christos ``13adf94006`` 106 1.1 christos 107 1.1 christos :iscman:`named` could terminate unexpectedly when reconfiguring or 108 1.1 christos reloading, and if client-side TLS transport was in use (for example, 109 1.1 christos when forwarding queries to a DoT server). This has been fixed. 110 1.1 christos :gl:`#5653` :gl:`!11299` 111 1.1 christos 112 1.1 christos - Fix unitiailized pointer check on getipandkeylist. ``5ed0cf091b`` 113 1.1 christos 114 1.1 christos Function `named_config_getipandkeylist` could, in case of error in the 115 1.1 christos early code attempting to get the `port` or `tls-port`, make a pointer 116 1.1 christos check on a non-initialized value. This is now fixed. :gl:`!11306` 117 1.1 christos 118 1.1 christos - Standardize CHECK and RETERR macros. ``ef714e91ac`` 119 1.1 christos 120 1.1 christos previously, there were over 40 separate definitions of CHECK macros, 121 1.1 christos of which most used "goto cleanup", and the rest "goto failure" or 122 1.1 christos "goto out". there were another 10 definitions of RETERR, of which most 123 1.1 christos were identical to CHECK, but some simply returned a result code 124 1.1 christos instead of jumping to a cleanup label. 125 1.1 christos 126 1.1 christos this has now been standardized throughout the code base: RETERR is for 127 1.1 christos returning an error code in the case of an error, and CHECK is for 128 1.1 christos jumping to a cleanup tag, which is now always called "cleanup". both 129 1.1 christos macros are defined in isc/util.h. :gl:`!11069` 130 1.1 christos 131 1.1 christos - Adding NSEC3 opt-out records could leave invalid records in 132 1.1 christos chain. ``1d83a8ad46`` 133 1.1 christos 134 1.1 christos When creating an NSEC3 opt-out chain, a node in the chain could be 135 1.1 christos removed too soon, causing the previous NSEC3 being unable to be found, 136 1.1 christos resulting in invalid NSEC3 records to be left in the zone. This has 137 1.1 christos been fixed. 138 1.1 christos 139 1.1 christos Closes [#5671](#5671) 140 1.1 christos 141