]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
backup: create dir path when restoring zonefile
authorLibor Peltan <libor.peltan@nic.cz>
Fri, 9 Oct 2020 15:38:50 +0000 (17:38 +0200)
committerLibor Peltan <libor.peltan@nic.cz>
Fri, 9 Oct 2020 15:38:50 +0000 (17:38 +0200)
src/knot/zone/backup.c
tests-extra/tests/zone/backup/test.py

index 3d203f9388dd2e9fec23e5be29347af3b5515d4a..08b04a9797e32d99c14423917177e475d34b2aa2 100644 (file)
@@ -252,7 +252,10 @@ int zone_backup(conf_t *conf, zone_t *zone)
                char *backup_zf = dir_file(ctx->backup_dir, local_zf);
 
                if (ctx->restore_mode) {
-                       ret = copy_file(local_zf, backup_zf);
+                       ret = make_path(local_zf, S_IRWXU | S_IRWXG);
+                       if (ret == KNOT_EOK) {
+                               ret = copy_file(local_zf, backup_zf);
+                       }
                } else {
                        conf_val_t val = conf_zone_get(conf, C_ZONEFILE_SYNC, zone->name);
                        bool can_flush = (conf_int(&val) > -1);
index 0b90459816442eb69f7ffa9bb4df5d8d948fa657..f4a798eae770d59d8764f76bbb3e8df76f8152a7 100644 (file)
@@ -69,6 +69,7 @@ if dnskey1_2 == dnskey1_1 or dnskey2_2 == dnskey2_1:
 
 test_added(master, zones, [ "NXDOMAIN", "NXDOMAIN" ])
 
+shutil.rmtree(master.dir + "/master")
 master.ctl("zone-restore +backupdir %s %s" % (backup_dir, zones[0].name), wait=True)
 
 t.sleep(5)
@@ -81,6 +82,7 @@ if dnskey2_3 == dnskey2_1:
 
 test_added(master, zones, [ "NOERROR", "NXDOMAIN" ])
 
+master.ctl("zone-restore +backupdir %s %s" % (backup_dir, zones[1].name), wait=True)
 master.stop()
 keydir = master.keydir # BEWARE this is function invocation
 shutil.rmtree(keydir)