diff --git a/src/knot/server/zones.c b/src/knot/server/zones.c index 843c2be7f174c2e495757d194a99afc43217953a..95ab2b1e4c756b5312b776fd99e4af9b45792a0b 100644 --- a/src/knot/server/zones.c +++ b/src/knot/server/zones.c @@ -47,7 +47,9 @@ static const size_t XFRIN_BOOTSTRAP_DELAY = 60; /*!< AXFR bootstrap avg. delay * /* Forward declarations. */ static int zones_dump_zone_text(knot_zone_contents_t *zone, const char *zf); - +static int zones_dump_zone_binary(knot_zone_contents_t *zone, + const char *zonedb, + const char *zonefile); /*----------------------------------------------------------------------------*/ /*! @@ -2134,12 +2136,24 @@ int zones_zonefile_sync(knot_zone_t *zone, journal_t *journal) zd->conf->name, zd->conf->file, serial_to); ret = zones_dump_zone_text(contents, zd->conf->file); if (ret != KNOTD_EOK) { - dbg_zones("zones: failed to sync '%s' to '%s'\n", - zd->conf->name, zd->conf->file); + log_zone_warning("Failed to apply differences " + "'%s' to '%s'\n", + zd->conf->name, zd->conf->file); pthread_mutex_unlock(&zd->lock); rcu_read_unlock(); return ret; } + + /* Save zone to binary db file. */ + ret = zones_dump_zone_binary(contents, zd->conf->db, zd->conf->file); + if (ret != KNOTD_EOK) { + log_zone_warning("Failed to apply differences " + "'%s' to '%s'\n", + zd->conf->name, zd->conf->db); + pthread_mutex_unlock(&zd->lock); + rcu_read_unlock(); + return KNOTD_ERROR; + } /* Update journal entries. */ dbg_zones_verb("zones: unmarking all dirty nodes "