Skip to content
Snippets Groups Projects
Commit 812b5f80 authored by Jan Kadlec's avatar Jan Kadlec
Browse files

Merge branch 'zone_create_no_lastnode' into 'master'

Zone Create No Lastnode
parents 8d40f2fc ffe98a08
Branches
Tags
No related merge requests found
...@@ -311,8 +311,7 @@ int xfrin_process_axfr_packet(knot_ns_xfr_t *xfr, knot_zone_contents_t **zone) ...@@ -311,8 +311,7 @@ int xfrin_process_axfr_packet(knot_ns_xfr_t *xfr, knot_zone_contents_t **zone)
} }
// Init zone creator // Init zone creator
zcreator_t zc = {.z = *zone, zcreator_t zc = {.z = *zone, .ret = KNOT_EOK };
.last_node = NULL, .ret = KNOT_EOK };
while (ret == KNOT_EOK && rr) { while (ret == KNOT_EOK && rr) {
......
...@@ -88,17 +88,9 @@ int zcreator_step(zcreator_t *zc, knot_rrset_t *rr) ...@@ -88,17 +88,9 @@ int zcreator_step(zcreator_t *zc, knot_rrset_t *rr)
return KNOT_EOK; return KNOT_EOK;
} }
knot_node_t *n; knot_node_t *node = NULL;
if (zc->last_node &&
knot_dname_is_equal(zc->last_node->owner, rr->owner)) {
// Reuse hint from last addition.
n = zc->last_node;
} else {
// Search for node or create a new one
n = NULL;
}
knot_rrset_t *zone_rrset = NULL; knot_rrset_t *zone_rrset = NULL;
int ret = knot_zone_contents_add_rr(zc->z, rr, &n, &zone_rrset); int ret = knot_zone_contents_add_rr(zc->z, rr, &node, &zone_rrset);
if (ret < 0) { if (ret < 0) {
if (!handle_err(zc, rr, ret)) { if (!handle_err(zc, rr, ret)) {
// Fatal error // Fatal error
...@@ -110,19 +102,18 @@ int zcreator_step(zcreator_t *zc, knot_rrset_t *rr) ...@@ -110,19 +102,18 @@ int zcreator_step(zcreator_t *zc, knot_rrset_t *rr)
} else if (ret > 0) { } else if (ret > 0) {
knot_rrset_free(&rr, NULL); knot_rrset_free(&rr, NULL);
} }
assert(n); assert(node);
assert(zone_rrset); assert(zone_rrset);
zc->last_node = n;
// Do RRSet and node semantic checks // Do RRSet and node semantic checks
bool sem_fatal_error = false; bool sem_fatal_error = false;
err_handler_t err_handler; err_handler_t err_handler;
err_handler_init(&err_handler); err_handler_init(&err_handler);
ret = sem_check_rrset(n, zone_rrset, &err_handler); ret = sem_check_rrset(node, zone_rrset, &err_handler);
if (ret != KNOT_EOK) { if (ret != KNOT_EOK) {
return ret; return ret;
} }
ret = sem_check_node_plain(zc->z, n, ret = sem_check_node_plain(zc->z, node,
&err_handler, true, &err_handler, true,
&sem_fatal_error); &sem_fatal_error);
if (ret != KNOT_EOK) { if (ret != KNOT_EOK) {
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
*/ */
typedef struct zcreator { typedef struct zcreator {
knot_zone_contents_t *z; /*!< Created zone. */ knot_zone_contents_t *z; /*!< Created zone. */
knot_node_t *last_node; /*!< Last used node, use to save zone lookup. */
int ret; /*!< Return value. */ int ret; /*!< Return value. */
} zcreator_t; } zcreator_t;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment