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);
}
}
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);
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;
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)",
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);
}
}
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.
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);
{
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);
}
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:
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);