]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
zone/timers/commit: bugfix: use correct conf_t reference
authorDaniel Salzman <daniel.salzman@nic.cz>
Fri, 21 Nov 2025 19:08:32 +0000 (20:08 +0100)
committerLibor Peltan <libor.peltan@nic.cz>
Mon, 24 Nov 2025 09:53:08 +0000 (10:53 +0100)
src/knot/events/events.c
src/knot/updates/zone-update.c
src/knot/zone/zone.c
src/knot/zone/zone.h
src/knot/zone/zonedb-load.c

index d2ec6693708901baac954246503413e6dce7991c..0648641e639f679cd33d78a471639c530d935fb2 100644 (file)
@@ -229,7 +229,7 @@ static void event_wrap(worker_task_t *task)
        if (ret == KNOT_EOK) {
                /* Execute the event callback. */
                ret = info->callback(conf, zone);
-               zone_timers_commit(zone);
+               zone_timers_commit(conf, zone);
                conf_free(conf);
        }
 
index f4c7bddb264dfd8185333fb6a2ec8e8d36b7b087..6aede8d73efbaaf1ba9d94bc91f2a2d22c989641 100644 (file)
@@ -1211,7 +1211,7 @@ int zone_update_commit(conf_t *conf, zone_update_t *update)
        }
 
        if (dnssec) {
-               zone_set_lastsigned_serial(update->zone, zone_contents_serial(update->new_cont));
+               zone_set_lastsigned_serial(conf, update->zone, zone_contents_serial(update->new_cont));
 
                if ((update->flags & UPDATE_SIGNED_FULL)) {
                        zone_set_flag(update->zone, ZONE_LAST_SIGN_OK);
index 8ac063404096592d4d28e19234ade6e6f4c62b85..201459cf1654e2cbc77c9595fc796b347dad8451 100644 (file)
@@ -733,7 +733,7 @@ static void timers_cleanup(struct rcu_head *head)
        free(cleanup);
 }
 
-void zone_timers_commit(zone_t *zone)
+void zone_timers_commit(conf_t *conf, zone_t *zone)
 {
        if (zone->timers_static == zone->timers) {
                return;
@@ -747,7 +747,7 @@ void zone_timers_commit(zone_t *zone)
                call_rcu((struct rcu_head *)cleanup, timers_cleanup);
        }
 
-       if (conf()->cache.db_timer_db_sync == TIMER_DB_SYNC_IMMEDIATE) {
+       if (conf->cache.db_timer_db_sync == TIMER_DB_SYNC_IMMEDIATE) {
                int ret = zone_timers_write(&zone->server->timerdb, zone->name, zone->timers);
                if (ret != KNOT_EOK) {
                        log_zone_error(zone->name, "failed to update persistent timer DB (%s)",
@@ -979,13 +979,13 @@ int zone_get_master_serial(zone_t *zone, uint32_t *serial)
        return kasp_db_load_serial(zone_kaspdb(zone), zone->name, KASPDB_SERIAL_MASTER, serial);
 }
 
-void zone_set_lastsigned_serial(zone_t *zone, uint32_t serial)
+void zone_set_lastsigned_serial(conf_t *conf, zone_t *zone, uint32_t serial)
 {
        bool extra_txn = (zone->control_update != NULL && zone->timers == zone->timers_static && zone_timers_begin(zone) == KNOT_EOK); // zone_update_commit() is not within a zone event in case of control_update
        zone->timers->last_signed_serial = serial;
        zone->timers->flags |= LAST_SIGNED_SERIAL_FOUND | LAST_SIGNED_SERIAL_VALID | TIMERS_MODIFIED;
        if (extra_txn) {
-               zone_timers_commit(zone);
+               zone_timers_commit(conf, zone);
        }
 }
 
index d177c0a864ca24c9f513917a3b9f4c8ccd977b1e..3b14bebca286fc0f30703310bbe9934a7515ca88 100644 (file)
@@ -287,7 +287,7 @@ bool zone_expired(const zone_t *zone);
 void zone_timers_sanitize(conf_t *conf, zone_t *zone);
 
 int zone_timers_begin(zone_t *zone);
-void zone_timers_commit(zone_t *zone);
+void zone_timers_commit(conf_t *conf, zone_t *zone);
 
 typedef struct {
        bool address;     //!< Fallback to next remote address is required.
@@ -331,7 +331,7 @@ int zone_set_master_serial(zone_t *zone, uint32_t serial);
 
 int zone_get_master_serial(zone_t *zone, uint32_t *serial);
 
-void zone_set_lastsigned_serial(zone_t *zone, uint32_t serial);
+void zone_set_lastsigned_serial(conf_t *conf, zone_t *zone, uint32_t serial);
 
 int zone_get_lastsigned_serial(zone_t *zone, uint32_t *serial);
 
index d00f76cb35d359f4f7ee96ea5cb5c0c73f537767..1e6b79e2e8df309ba99e9ca77c9e299aaab62e1f 100644 (file)
@@ -223,17 +223,17 @@ static void zone_purge(conf_t *conf, zone_t *zone)
 {
        zone_timers_begin(zone);
        (void)selective_zone_purge(conf, zone, PURGE_ZONE_ALL);
-       zone_timers_commit(zone);
+       zone_timers_commit(conf, zone);
 }
 
-static zone_contents_t *zone_expire(zone_t *zone, bool zonedb_cow)
+static zone_contents_t *zone_expire(conf_t *conf, zone_t *zone, bool zonedb_cow)
 {
        if (!zonedb_cow) {
                zone_timers_begin(zone);
                zone->timers->next_expire = time(NULL);
                zone->timers->next_refresh = zone->timers->next_expire;
                zone->timers->flags |= TIMERS_MODIFIED;
-               zone_timers_commit(zone);
+               zone_timers_commit(conf, zone);
        }
        return zone_switch_contents(zone, NULL);
 }
@@ -269,7 +269,7 @@ static zone_t *reuse_member_zone(zone_t *zone, server_t *server, conf_t *conf,
                case CAT_UPD_UNIQ:
                        zone_purge(conf, zone);
                        knot_sem_wait(&zone->cow_lock);
-                       ptrlist_add(expired_contents, zone_expire(zone, false), NULL);
+                       ptrlist_add(expired_contents, zone_expire(conf, zone, false), NULL);
                        knot_sem_post(&zone->cow_lock);
                        // FALLTHROUGH
                case CAT_UPD_PROP:
@@ -595,7 +595,7 @@ static knot_zonedb_t *create_zonedb_catalog(conf_t *conf, server_t *server,
                        if (upd->type == CAT_UPD_UNIQ && zone != NULL) {
                                zone_purge(conf, zone);
                                knot_sem_wait(&zone->cow_lock);
-                               ptrlist_add(expired_contents, zone_expire(zone, true), NULL);
+                               ptrlist_add(expired_contents, zone_expire(conf, zone, true), NULL);
                                knot_sem_post(&zone->cow_lock);
                        }
                        zone_t *old = knot_zonedb_find(db_old, upd->member);