From ae50b50339f37e9c939238e9ac96a46d59259ed4 Mon Sep 17 00:00:00 2001 From: Jan Vcelak <jan.vcelak@nic.cz> Date: Wed, 24 Jul 2013 15:20:14 +0200 Subject: [PATCH] remote signzone: temporary code to apply the changeset - changes are written into journal - from some reason the zone struct is not set correctly --- src/knot/ctl/remote.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/knot/ctl/remote.c b/src/knot/ctl/remote.c index a955a9c7e..9736d50fe 100644 --- a/src/knot/ctl/remote.c +++ b/src/knot/ctl/remote.c @@ -192,6 +192,7 @@ static int remote_sign_zone(server_t *server, const knot_zone_t *zone) knot_changeset_t *changeset = changesets->sets; assert(changeset); + changesets->count = 1; // generate NSEC records @@ -216,6 +217,38 @@ static int remote_sign_zone(server_t *server, const knot_zone_t *zone) } */ + // update SOA if there are any changes + + log_server_info("changeset add %zu remove %zu\n", changeset->add_count, changeset->remove_count); + + if (changeset->add_count == 0 || changeset->remove_count == 0) { + log_server_info("No changes performed.\n"); + result = KNOT_EOK; + goto failure; // not really a failure + } + + result = knot_zone_sign_update_soa(zone->contents, changeset); + if (result != KNOT_EOK) { + log_server_error("Cannot update SOA record (%s).\n", + knot_strerror(result)); + goto failure; + } + + // apply changeset + + rcu_read_unlock(); // HACK + knot_zone_contents_t *new_contents = NULL; + result = zones_store_and_apply_chgsets(changesets, zone, &new_contents, + "DNSSEC", XFR_TYPE_UPDATE); + rcu_read_lock(); + if (result != KNOT_EOK) { + log_server_error("Cannot apply changeset (%s).\n", + knot_strerror(result)); + goto failure; + } + + changesets = NULL; // freed by apply_chgsets + failure: // tmp -- GitLab