From e060ea019f649cb6822e57479be0080fbb5b75f6 Mon Sep 17 00:00:00 2001 From: Lubos Slovak <lubos.slovak@nic.cz> Date: Tue, 8 Oct 2013 13:20:50 +0200 Subject: [PATCH] Fixed check for changeset emptiness. It may happen that changeset has beginning SOA set, but no other RRs - in that case it should probably be considered empty. --- src/knot/server/zones.c | 3 ++- src/libknot/updates/changesets.c | 4 ++-- src/libknot/updates/changesets.h | 3 +++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/knot/server/zones.c b/src/knot/server/zones.c index 208cafba8..86b09dc3a 100644 --- a/src/knot/server/zones.c +++ b/src/knot/server/zones.c @@ -3353,7 +3353,8 @@ int zones_store_and_apply_chgsets(knot_changesets_t *chs, ret = zones_store_changesets_begin_and_store(zone, chs, &transaction); if (ret != KNOT_EOK) { log_zone_error("%s Failed to serialize and store " - "changesets.\n", msgpref); + "changesets: %s.\n", msgpref, + knot_strerror(ret)); /* Free changesets, but not the data. */ knot_changesets_free(&chs); return ret; diff --git a/src/libknot/updates/changesets.c b/src/libknot/updates/changesets.c index b2cf4b7eb..afd0e9c54 100644 --- a/src/libknot/updates/changesets.c +++ b/src/libknot/updates/changesets.c @@ -285,8 +285,8 @@ bool knot_changeset_is_empty(const knot_changeset_t *changeset) return true; } - return (changeset->soa_from == NULL && changeset->soa_to == NULL) && - (EMPTY_LIST(changeset->add) && EMPTY_LIST(changeset->remove)); + return (changeset->soa_to == NULL && + EMPTY_LIST(changeset->add) && EMPTY_LIST(changeset->remove)); } size_t knot_changeset_size(const knot_changeset_t *changeset) diff --git a/src/libknot/updates/changesets.h b/src/libknot/updates/changesets.h index 4c4ea314f..a730d265b 100644 --- a/src/libknot/updates/changesets.h +++ b/src/libknot/updates/changesets.h @@ -221,6 +221,9 @@ void knot_changeset_add_soa(knot_changeset_t *changeset, knot_rrset_t *soa, * * \param changeset Changeset to be checked. * + * Changeset is considered empty if it has no RRs in REMOVE and ADD sections and + * final SOA (soa_to) is not set. + * * \retval true if changeset is empty. * \retval false if changeset is not empty. */ -- GitLab