diff --git a/src/knot/nameserver/update.c b/src/knot/nameserver/update.c index cfc82752f39c44fdb029da0d09d4247f7300447c..f29a34501842f192d6c0896605873ff688d11dc5 100644 --- a/src/knot/nameserver/update.c +++ b/src/knot/nameserver/update.c @@ -198,13 +198,14 @@ static int knot_ns_process_update(const knot_pkt_t *query, knot_changesets_get_last(chgs), rcode, new_serial); if (ret != KNOT_EOK) { - dbg_ns("Failed to apply UPDATE to the zone copy or no update" - " made: %s\n", (ret < 0) ? knot_strerror(ret) - : "No change made."); return ret; } - return xfrin_apply_changesets(old_zone, chgs, new_contents); + const bool change_made = + knot_changeset_is_empty(knot_changesets_get_last(chgs)); + return change_made ? + xfrin_apply_changesets(old_zone, chgs, new_contents) : + KNOT_EOK; } static int replan_zone_sign_after_ddns(zone_t *zone, uint32_t refresh_at) @@ -280,14 +281,15 @@ static int zones_process_update_auth(struct query_data *qdata) ret = knot_ns_process_update(qdata->query, zone, &new_contents, chgsets, &qdata->rcode, new_serial); if (ret != KNOT_EOK) { - if (ret > 0) { - log_zone_notice("%s: No change to zone made.\n", msg); - qdata->rcode = KNOT_RCODE_NOERROR; - } - + return ret; + } + + if (knot_changeset_is_empty(knot_changesets_get_last(chgsets))) { + log_zone_notice("%s: No change to zone made.\n", msg); + qdata->rcode = KNOT_RCODE_NOERROR; knot_changesets_free(&chgsets); free(msg); - return (ret < 0) ? ret : KNOT_EOK; + return KNOT_EOK; } knot_changesets_t *sec_chs = NULL; diff --git a/src/knot/updates/xfr-in.c b/src/knot/updates/xfr-in.c index c050d97324ac0f05a97960de169b00a4f3060733..f1f86a665d1703d9aa93d68a6c98428edd76965d 100644 --- a/src/knot/updates/xfr-in.c +++ b/src/knot/updates/xfr-in.c @@ -1520,7 +1520,7 @@ int xfrin_apply_changesets(zone_t *zone, || new_contents == NULL) { return KNOT_EINVAL; } - + knot_zone_contents_t *old_contents = zone->contents; if (!old_contents) { dbg_xfrin("Cannot apply changesets to empty zone.\n");