Changelogs for 4.9.x
====================

.. changelog::
  :version: 4.9.12
  :released: 11th of December 2025

  This is release 4.9.12 of the Authoritative Server.
  It contains bug fixes and a minor feature.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: New Features
    :pullreq: 16600
    :tickets: 16589

    allow finer-grained rrset changes through the API

  .. change::
    :tags: Bug Fixes
    :pullreq: 16604
    :tickets: 16538

    m4/pdns_check_libcrypto: fix ecdsa/eddsa includedir (famfo)

  .. change::
    :tags: Bug Fixes
    :pullreq: 16567
    :tickets: 16564

    add missing catch block for STL exceptions in createForward

  .. change::
    :tags: Bug Fixes
    :pullreq: 16550
    :tickets: 15716

    auth backend transaction fixes in error cases

  .. change::
    :tags: Bug Fixes
    :pullreq: 16534
    :tickets: 16059

    REST API: bring back 404 errors

  .. change::
    :tags: Bug Fixes
    :pullreq: 16535
    :tickets: 16287

    Prevent a potential race condition in cache cleaning

.. changelog::
  :version: 4.9.11
  :released: 15th of October 2025

  This is release 4.9.10 of the Authoritative Server.
  It contains a minor feature.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: New Features
    :pullreq: 16196

    lmdb: optional memory-only freshness check timestamp

.. changelog::
  :version: 4.9.10
  :released: never

  Technical issues in the release process prevented the 4.9.10 release to be
  created correctly.
  Therefore 4.9.10 was never released, in favour of 4.9.11.

.. changelog::
  :version: 4.9.9
  :released: 24th of September 2025

  This is release 4.9.9 of the Authoritative Server.
  It contains a minor feature and a few fixes.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: Bug Fixes
    :pullreq: 16158

    memory corruption in ODBC plus tweaks to appease coverity

  .. change::
    :tags: Bug Fixes
    :pullreq: 16157

    Fix EDNS Cookie & Proxy protocol

  .. change::
    :tags: New Features
    :pullreq: 16154

    lmdb: optional memory-only notification timestamps (:ref:`setting-lmdb-write-notification-update`)

.. changelog::
  :version: 4.9.8
  :released: 7th of August 2025

  This is release 4.9.8 of the Authoritative Server.
  It contains a minor feature.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: New Features
    :pullreq: 15961

    Return record last modification time in the API when known.

.. changelog::
  :version: 4.9.7
  :released: 7th of July 2025

  This is release 4.9.7 of the Authoritative Server.
  It contains bug fixes, mainly in LMDB.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: Bug Fixes
    :pullreq: 15770
    :tickets: 15063

    compilation fix: Include cstdint to get uint64_t

  .. change::
    :tags: Bug Fixes
    :pullreq: 15772
    :tickets: 15594

    auth docker: avoid crash on --version caused by doubly loaded modules

  .. change::
    :tags: Bug Fixes
    :pullreq: 15771
    :tickets: 15518

    TSIG payload: use canonical (lowercase) name format

  .. change::
    :tags: Bug Fixes
    :pullreq: 15736
    :tickets: 15677

    LMDB: honour map-size for all files

  .. change::
    :tags: Bug Fixes
    :pullreq: 15720

    Close race window during which LMDB lightning stream flag values might be incorrect.

.. changelog::
  :version: 4.9.6
  :released: never

  Technical issues in the release process prevented the 4.9.6 release to be
  created correctly.
  Therefore 4.9.6 was never released, in favour of 4.9.7.

.. changelog::
  :version: 4.9.5
  :released: 7th of May 2025

  This is release 4.9.5 of the Authoritative Server.
  It contains an LMDB performance optimization and bug fixes.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: Improvements
    :pullreq: 15237
    :tickets: 15176

    Faster LMDB list/lookup/get operations

  .. change::
    :tags: Bug Fixes
    :pullreq: 15347
    :tickets: 15339

    Correctly handle marked-as-deleted elements in LMDB read-only queries

  .. change::
    :tags: Bug Fixes
    :pullreq: 15345
    :tickets: 15340

    Fix MySQL operation on 64-bit big-endian platforms

  .. change::
    :tags: Bug Fixes
    :pullreq: 15228
    :tickets: 15222

    Fix incorrect behaviour of Lua createForward and createForward6 functions
    leading to possible SERVFAIL answers, when processing certain data.

.. changelog::
  :version: 4.9.4
  :released: 7th of February 2025

  This is release 4.9.4 of the Authoritative Server.
  It contains a bug fix.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: Bug Fixes
    :pullreq: 15094
    :tickets: 15093

    check return value of getCatalogMembers() (Kees Monshouwer)

.. changelog::
  :version: 4.9.3
  :released: 17th of December 2024

  This is release 4.9.3 of the Authoritative Server.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: Bug Fixes
    :pullreq: 14968

    SVCB parser: allow quotes around port=

.. changelog::
  :version: 4.9.2
  :released: 1st of October 2024

  This is release 4.9.2 of the Authoritative Server.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: Bug Fixes
    :pullreq: 14711

    pdnsutil check-zone: make LUA records optional

  .. change::
    :tags: Improvements
    :pullreq: 14710

    Yahttp router: appease coverity regarding unsigned underflow in match()

  .. change::
    :tags: Bug Fixes
    :pullreq: 14708

    json11: add include for cstdint

  .. change::
    :tags: Improvements
    :pullreq: 14709

    Fix build with boost 1.86.0

  .. change::
    :tags: Bug Fixes
    :pullreq: 14675

    API: when querying with rrset_name, respect it for comments too

  .. change::
    :tags: Improvements
    :pullreq: 14707

    more and better thread names

  .. change::
    :tags: New Features
    :pullreq: 14712

    provide dns packet when doing lookup for presigned signatures

  .. change::
    :tags: Improvements
    :pullreq: 14706

    webserver.cc: try to pass exception text with 500 errors

  .. change::
    :tags: Improvements
    :pullreq: 14603

    ssqlite3: use "begin immediate" to avoid later fights over upgrading to write

  .. change::
    :tags: Bug Fixes
    :pullreq: 14526

    fix domain ordering in catalog SQL query

  .. change::
    :tags: Improvements
    :pullreq: 14403

    switch el7 builds to Oracle Linux 7

  .. change::
    :tags: Improvements
    :pullreq: 14405

    dns.cc: use ``pdns::views::UnsignedCharView``

  .. change::
    :tags: Improvements
    :pullreq: 14303

    geoipbackend: link C++ filesystem lib if necessary

  .. change::
    :tags: New Features
    :pullreq: 14245

    auth web: make request/response timeout configurable (Samir Aguiar)

.. changelog::
  :version: 4.9.1
  :released: 28th of May 2024

  This is release 4.9.1 of the Authoritative Server.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  .. change::
    :tags: Bug Fixes
    :pullreq: 14253

    autoconf: allow prerelease systemd versions (Chris Hofstaedtler)

  .. change::
    :tags: Bug Fixes
    :pullreq: 14251

    ixfrdist: Fix broken 'uid' and 'gid' parsing for non-numerical values

  .. change::
    :tags: Bug Fixes
    :pullreq: 14229

    YaHTTP: Enforce max # of request fields and max request line size

  .. change::
    :tags: Improvements
    :pullreq: 14188

    rpm: Change home directory to /var/lib/pdns

  .. change::
    :tags: Bug Fixes
    :pullreq: 14199

    Fix memory leaks in the bind file format parser

  .. change::
    :tags: Bug Fixes
    :pullreq: 14186

    dnsproxy: fix build on s390x (Chris Hofstaedtler)

  .. change::
    :tags: Improvements
    :pullreq: 14191

    m4: Add option for 64-bit time_t on 32-bit systems with glibc-2.34 (Sven Wegener)

  .. change::
    :tags: Bug Fixes
    :pullreq: 14189

    pdnsutil check-zone: accept LUA A/AAAA as SVCB address targets

  .. change::
    :tags: Bug Fixes
    :pullreq: 14190

    Properly finalize PKCS11 modules before releasing them (Aki Tuomi)

  .. change::
    :tags: Improvements
    :pullreq: 14187

    Wrap backend factories in smart pointers

  .. change::
    :tags: Bug Fixes
    :pullreq: 14058

    don't crash when a catalog SOA is invalid 

  .. change::
    :tags: Improvements
    :pullreq: 14126

    (optionally) drop whitespace on join

  .. change::
    :tags: Bug Fixes
    :pullreq: 13929

    debian: adjust option name in shipped postinst

.. changelog::
  :version: 4.9.0
  :released: 15th of March 2024

  This is release 4.9.0 of the Authoritative Server.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  4.9 contains improvements to the API, ALIAS handling, catalog zones, and some tool improvements.
  It also contains various bug fixes and smaller improvements, please see the list below.

  .. change::
    :tags: Improvements
    :pullreq: 13901

    on OpenBSD, try harder to send on a non-blocking socket

  .. change::
    :tags: New Features
    :pullreq: 13900

    LUA dblookup: switch qtype argument to int

  .. change::
    :tags: Bug Fixes
    :pullreq: 13899

    revive remotebackend tests and fix failures

  .. change::
    :tags: Improvements
    :pullreq: 13898

    Docker: Only print config if debug flag is set

  .. change::
    :tags: Bug Fixes
    :pullreq: 13897

    do not disable ns records at apex in consumer zones

  .. change::
    :tags: Bug Fixes
    :pullreq: 13896

    catalog: include groups in hash calculation

  .. change::
    :tags: New Features
    :pullreq: 13895

    LUA: support returning empty set in filterForward #13879

.. changelog::
  :version: 4.9.0-beta2
  :released: 16th of February 2024

  This is release 4.9.0-beta2 of the Authoritative Server.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  4.9 contains improvements to the API, ALIAS handling, catalog zones, and some tool improvements.
  It also contains various bug fixes and smaller improvements, please see the list below.

  .. change::
    :tags: Bug Fixes
    :pullreq: 13803

    lmdb: remove mapasync mode, it was always a lie

  .. change::
    :tags: New Features
    :pullreq: 13753

    ixfrdist: add support for outgoing notify

  .. change::
    :tags: New Features
    :pullreq: 13752

    LUA records, pickchashed function

  .. change::
    :tags: New Features
    :pullreq: 13391

    Add Lua function to pick records via name hash (Brian Rak)

  .. change::
    :tags: New Features
    :pullreq: 12359

    LUA records: add dblookup function

  .. change::
    :tags: Improvements
    :pullreq: 13743

    API: reject priority element in record

  .. change::
    :tags: Improvements
    :pullreq: 13724

    dnsname: Optimize parsing of uncompressed labels

  .. change::
    :tags: Bug Fixes
    :pullreq: 13738

    debian: adjust option names in shipped configs

  .. change::
    :tags: Improvements
    :pullreq: 13110

    Log port with all freshness check failure scenarios. (Sander Smeenk)

  .. change::
    :tags: Improvements
    :pullreq: 13723

    DNSName: correct len and offset types

  .. change::
    :tags: Bug Fixes
    :pullreq: 13725

    fix tinydnsbackend compilation issue

  .. change::
    :tags: Improvements
    :pullreq: 13729

    getAllDomains catalog: avoid useless copy

  .. change::
    :tags: Improvements
    :pullreq: 13722

    LUA createForward: allow non-hex word prefix

  .. change::
    :tags: Bug Fixes
    :pullreq: 13633

    set catalog in gsql getAllDomains

  .. change::
    :tags: New Features
    :pullreq: 13649

    add a configurable delay for notifications

  .. change::
    :tags: New Features
    :pullreq: 13481

    Add and document a `localwho()` function for LUA records (Bert Hubert)

.. changelog::
  :version: 4.9.0-beta1
  :released: not released

  This version number was skipped.

.. changelog::
  :version: 4.9.0-alpha1
  :released: 12th of January 2024

  This is release 4.9.0-alpha1 of the Authoritative Server.

  Please review the :doc:`Upgrade Notes <../upgrading>` before upgrading from versions < 4.9.x.

  This version contains improvements to the API, ALIAS handling, catalog zones, and some tool improvements.
  It also contains various bug fixes and smaller improvements, please see the list below.

  .. change::
    :tags: New Features
    :pullreq: 13441

    forward EDNS Client Subnet option during ALIAS processing

  .. change::
    :tags: Improvements
    :pullreq: 13693

    iputils: avoid unused warnings on !linux

  .. change::
    :tags: Improvements
    :pullreq: 13613

    Remove the `extern`ed `StatBag` from `ws-auth`

  .. change::
    :tags: Improvements
    :pullreq: 13642

    allow building in separate build directory (Chris Hofstaedtler)

  .. change::
    :tags: Bug Fixes
    :pullreq: 13635

    improve wildcard CNAME handling (Kees Monshouwer)

  .. change::
    :tags: Bug Fixes
    :pullreq: 13514

    auth api: flush all caches when flushing (Chris Hofstaedtler)

  .. change::
    :tags: Improvements
    :pullreq: 13153, 13641

    Move method checking to Router (Aki Tuomi)

  .. change::
    :tags: Improvements
    :pullreq: 13619

    Add supervisor to Auth container image

  .. change::
    :tags: New Features
    :pullreq: 13062

    add loglevel-show setting to get logs formatted like structured logs

  .. change::
    :tags: Bug Fixes
    :pullreq: 13072

    CAA records: handle empty value more gracefully, fixes #13070

  .. change::
    :tags: Improvements
    :pullreq: 13023

    Remove legacy terms from the codebase (Kees Monshouwer)

  .. change::
    :tags: Improvements
    :pullreq: 13191

    Wrap ``DIR*`` objects in unique pointers to prevent memory leaks

  .. change::
    :tags: New Features
    :pullreq: 13322

    ixfrdist: add NOTIFY receive support

  .. change::
    :tags: Improvements
    :pullreq: 13028

    bindparser add primary/secondary/etc. keywords (Kees Monshouwer)

  .. change::
    :tags: Improvements
    :pullreq: 13340

    Netmask: Normalize subnet masks coming from a string

  .. change::
    :tags: New Features
    :pullreq: 13287

    dnsscope: Add a `--port` option to select a custom port

  .. change::
    :tags: Improvements
    :pullreq: 13014

    Report auth settings deprecated in 4.5 (Josh Soref)

  .. change::
    :tags: New Features
    :pullreq: 13293

    sdig: add rudimentary EDE output

  .. change::
    :tags: Improvements
    :pullreq: 13192

    Improve error message for missing GSS-TSIG feature (Andreas Jakum)

  .. change::
    :tags: New Features
    :pullreq: 13238

    add default-catalog-zone setting

  .. change::
    :tags: New Features
    :pullreq: 12086

    API: replace zone contents et al (Chris Hofstaedtler)

  .. change::
    :tags: New Features
    :pullreq: 11597

    geoipbackend: Support reading zones from directory (Aki Tuomi)

  .. change::
    :tags: Improvements
    :pullreq: 13162

    Print the list of loaded modules next to the config.h preset

  .. change::
    :tags: Improvements
    :pullreq: 13168

    Change the default for building with net-snmp from `auto` to `no`

  .. change::
    :tags: Improvements
    :pullreq: 12565

    harmonize \*xfr log messages (Josh Soref)

  .. change::
    :tags: Improvements
    :pullreq: 12949

    Refactor the MultiThreadDistributor using `pdns::channel`

  .. change::
    :tags: Bug Fixes
    :pullreq: 13018

    calidns: Fix setting an ECS source of 0

  .. change::
    :tags: Bug Fixes
    :pullreq: 13019

    calidns: Prevent a crash on an empty domains file

  .. change::
    :tags: Improvements
    :pullreq: 13065

    report which backend failed to instantiate

  .. change::
    :tags: Improvements
    :pullreq: 13063

    add remote to logs when tcp thread dies (Chris Hofstaedtler)

  .. change::
    :tags: Improvements
    :pullreq: 13049

    Add missing tools to pdns-tools package description (control) (Andreas Jakum)

  .. change::
    :tags: Improvements
    :pullreq: 12753

    pkcs11signers: If private key object has `CKA_ALWAYS_AUTHENTICATE` attribute, perform `CKU_CONTEXT_SPECIFIC` login after `OperationInit` to make it actually work. (Aki Tuomi)

  .. change::
    :tags: Improvements
    :pullreq: 13029

    wait for `mysql.service` (Andras Kovacs)

  .. change::
    :tags: Improvements
    :pullreq: 12877

    bump sdist builders to alpine 3.18

  .. change::
    :tags: Improvements
    :pullreq: 11510

    new option 'ignore-errors' for setting 'outgoing-axfr-expand-alias' (Klaus Darilion)