+6032. [bug] After change 5995, zone transfers were using a small
+ compression context that only had space for the first
+ few dozen names in each message. They now use a large
+ compression context with enough space for every name.
+ [GL #3706]
+
6031. [bug] Move the "final reference detached" log message
from dns_zone unit to the DEBUG(1) log level.
[GL #3707]
10 to 100 to accomodate for some browsers that send more that 10
headers by default. :gl:`#3670`
-
- Copy TLS identifier when setting up primaries for catalog member
zones. :gl:`#3638`
:iscman:`named-checkzone` tool from superfluously logging this message
in non-debug mode. :gl:`#3707`
+- The new name compression code in BIND 9.19.7 was not compressing
+ names in zone transfers that should have been compressed, so zone
+ transfers were larger than before. :gl:`#3706`
+
Known Issues
~~~~~~~~~~~~
* few dozen names in the hash set. (We can't actually use every slot because
* space is reserved for performance reasons.) For large messages, the number
* of names is limited by the minimum size of an RR (owner, type, class, ttl,
- * length) which is 16 bytes when the owner has a new 3-character label
- * before the compressed zone name. Divide the maximum compression offset
- * 0x3FFF by 16 and you get roughly 1024.
+ * length) which is 12 bytes - call it 16 bytes to make space for a new label.
+ * Divide the maximum compression offset 0x4000 by 16 and you get 0x400 == 1024.
+ * In practice, the root zone (for example) uses less than 200 distinct names
+ * per message.
*/
enum {
DNS_COMPRESS_SMALLBITS = 6,
if (is_tcp) {
isc_region_t used;
- dns_compress_init(&cctx, xfr->mctx, DNS_COMPRESS_CASE);
+ dns_compress_init(&cctx, xfr->mctx,
+ DNS_COMPRESS_CASE | DNS_COMPRESS_LARGE);
cleanup_cctx = true;
CHECK(dns_message_renderbegin(msg, &cctx, &xfr->txbuf));
CHECK(dns_message_rendersection(msg, DNS_SECTION_QUESTION, 0));