]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
IXFR: when ignoring ZONEMD removals, remove the local ZONEMD at first
authorLibor Peltan <libor.peltan@nic.cz>
Mon, 8 Dec 2025 10:40:23 +0000 (11:40 +0100)
committerDaniel Salzman <daniel.salzman@nic.cz>
Tue, 9 Dec 2025 08:14:31 +0000 (09:14 +0100)
src/knot/events/handlers/refresh.c

index 364a2a47a1bc8cd2efca3855644fb26f5b01b3b9..79690d8511f38c94653dc1b8cdfb0a0605d3ba07 100644 (file)
@@ -620,6 +620,15 @@ static int ixfr_finalize(struct refresh_data *data)
 
        changeset_t *set;
        WALK_LIST(set, data->ixfr.changesets) {
+               if (data->ignore_zonemd) {
+                       ret = zone_update_remove_rrset(&up, data->zone->name, KNOT_RRTYPE_ZONEMD);
+                       if (ret != KNOT_EOK && ret != KNOT_ENOENT) {
+                               data->fallback_axfr = false;
+                               data->fallback->remote = false;
+                               return ret;
+                       }
+               }
+
                ret = zone_update_apply_changeset(&up, set);
                if (ret != KNOT_EOK) {
                        uint32_t serial_from = knot_soa_serial(set->soa_from->rrs.rdata);