diff --git a/src/knot/nameserver/update.c b/src/knot/nameserver/update.c index 0809dbd900a44ddfe6f3d348d6071c528802b41a..aee4ca9115bde276ef03076ddfcaad7098de5123 100644 --- a/src/knot/nameserver/update.c +++ b/src/knot/nameserver/update.c @@ -153,6 +153,7 @@ static int process_normal(conf_t *conf, zone_t *zone, list_t *requests) // Apply changes. ret = zone_update_commit(conf, &up); + zone_update_clear(&up); if (ret != KNOT_EOK) { if (ret == KNOT_ETTL || ret == KNOT_EZONESIZE) { set_rcodes(requests, KNOT_RCODE_REFUSED); @@ -162,8 +163,6 @@ static int process_normal(conf_t *conf, zone_t *zone, list_t *requests) return ret; } - zone_update_clear(&up); - /* Sync zonefile immediately if configured. */ conf_val_t val = conf_zone_get(conf, C_ZONEFILE_SYNC, zone->name); if (conf_int(&val) == 0) { diff --git a/src/knot/updates/zone-update.c b/src/knot/updates/zone-update.c index 3af1d28ce50cbaecd960d512d3ac54ed745ce6ce..afe094afea5da363d8f29a8e631a858b988dc256 100644 --- a/src/knot/updates/zone-update.c +++ b/src/knot/updates/zone-update.c @@ -716,6 +716,7 @@ int zone_update_commit(conf_t *conf, zone_update_t *update) /* Sync RCU. */ synchronize_rcu(); if (update->flags & UPDATE_FULL) { + zone_contents_deep_free(&old_contents); update->new_cont = NULL; } else if (update->flags & UPDATE_INCREMENTAL) { update_cleanup(&update->a_ctx);