From b9690837eac25482979ad4d95afd3d0ecefbc144 Mon Sep 17 00:00:00 2001
From: Jan Kadlec <jan.kadlec@nic.cz>
Date: Thu, 13 Feb 2014 18:15:59 +0100
Subject: [PATCH] Post-merge changes in zone loading.

---
 src/knot/updates/xfr-in.c |  2 +-
 src/knot/zone/zone-load.c | 20 ++++++++++++++++----
 src/knot/zone/zone-load.h |  3 +--
 3 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/knot/updates/xfr-in.c b/src/knot/updates/xfr-in.c
index 093256924d..9b90be7fd4 100644
--- a/src/knot/updates/xfr-in.c
+++ b/src/knot/updates/xfr-in.c
@@ -301,7 +301,7 @@ int xfrin_process_axfr_packet(knot_ns_xfr_t *xfr, knot_zone_contents_t **zone)
 		if (rr->type != KNOT_RRTYPE_SOA) {
 			return KNOT_EMALF;
 		}
-		*zone = create_zone_from_dname(rr->owner);
+		*zone = knot_zone_contents_new(rr->owner);
 		if (*zone == NULL) {
 			knot_pkt_free(&packet);
 			return KNOT_ENOMEM;
diff --git a/src/knot/zone/zone-load.c b/src/knot/zone/zone-load.c
index 8979c448ca..3390a10235 100644
--- a/src/knot/zone/zone-load.c
+++ b/src/knot/zone/zone-load.c
@@ -187,10 +187,18 @@ static void loader_process(const scanner_t *scanner)
 	}
 }
 
-knot_zone_contents_t *create_zone_from_dname(const knot_dname_t *origin)
+knot_zone_contents_t *create_zone_from_name(const char *origin)
 {
-	knot_zone_contents_t *ret = knot_zone_contents_new(origin);
-	return ret;
+	if (origin == NULL) {
+		return NULL;
+	}
+	knot_dname_t *owner = knot_dname_from_str(origin);
+	if (owner == NULL) {
+		return NULL;
+	}
+	knot_zone_contents_t *z = knot_zone_contents_new(owner);
+	knot_dname_free(&owner);
+	return z;
 }
 
 int zonefile_open(zloader_t *loader, const conf_zone_t *conf)
@@ -214,6 +222,11 @@ int zonefile_open(zloader_t *loader, const conf_zone_t *conf)
 		free(zl);
 		return KNOT_ENOMEM;
 	}
+	zl->z = create_zone_from_name(conf->name);
+	if (zl->z == NULL) {
+		free(zl);
+		return KNOT_ENOMEM;
+	}
 
 	/* Create file loader. */
 	memset(loader, 0, sizeof(zloader_t));
@@ -328,5 +341,4 @@ void zonefile_close(zloader_t *loader)
 	free(loader->source);
 	free(loader->origin);
 	free(loader->context);
-	free(loader);
 }
diff --git a/src/knot/zone/zone-load.h b/src/knot/zone/zone-load.h
index 90786edb30..f783bb46e0 100644
--- a/src/knot/zone/zone-load.h
+++ b/src/knot/zone/zone-load.h
@@ -82,8 +82,7 @@ knot_zone_contents_t *zonefile_load(zloader_t *loader);
  */
 void zonefile_close(zloader_t *loader);
 
-knot_zone_contents_t *create_zone_from_dname(const knot_dname_t *origin);
-zone_t *create_zone_from_name(const char *origin);
+knot_zone_contents_t *create_zone_from_name(const char *origin);
 
 int zone_loader_step(zone_loader_t *zl, knot_rrset_t *rr);
 
-- 
GitLab