From b23735a2bb843e50e48f5dcf07f8f191f3914215 Mon Sep 17 00:00:00 2001 From: Daniel Salzman Date: Fri, 21 Nov 2025 20:08:32 +0100 Subject: [PATCH] zone/timers/commit: bugfix: use correct conf_t reference --- src/knot/events/events.c | 2 +- src/knot/updates/zone-update.c | 2 +- src/knot/zone/zone.c | 8 ++++---- src/knot/zone/zone.h | 4 ++-- src/knot/zone/zonedb-load.c | 10 +++++----- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/knot/events/events.c b/src/knot/events/events.c index d2ec669370..0648641e63 100644 --- a/src/knot/events/events.c +++ b/src/knot/events/events.c @@ -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); } diff --git a/src/knot/updates/zone-update.c b/src/knot/updates/zone-update.c index f4c7bddb26..6aede8d73e 100644 --- a/src/knot/updates/zone-update.c +++ b/src/knot/updates/zone-update.c @@ -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); diff --git a/src/knot/zone/zone.c b/src/knot/zone/zone.c index 8ac0634040..201459cf16 100644 --- a/src/knot/zone/zone.c +++ b/src/knot/zone/zone.c @@ -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); } } diff --git a/src/knot/zone/zone.h b/src/knot/zone/zone.h index d177c0a864..3b14bebca2 100644 --- a/src/knot/zone/zone.h +++ b/src/knot/zone/zone.h @@ -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); diff --git a/src/knot/zone/zonedb-load.c b/src/knot/zone/zonedb-load.c index d00f76cb35..1e6b79e2e8 100644 --- a/src/knot/zone/zonedb-load.c +++ b/src/knot/zone/zonedb-load.c @@ -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); -- 2.47.3