Skip to content

Commit a526bc1

Browse files
committed
consumer member zones in rbtree...
instead of double linked list
1 parent 2ae6fac commit a526bc1

File tree

5 files changed

+295
-221
lines changed

5 files changed

+295
-221
lines changed

options.c

+6-9
Original file line numberDiff line numberDiff line change
@@ -568,13 +568,12 @@ zone_options_delete(struct nsd_options* opt, struct zone_options* zone)
568568
region_recycle(opt->region, zone, sizeof(*zone));
569569
return;
570570
}
571-
/* Unlink the member zone if needed */
572-
if(member_zone->prev_next_ptr) {
573-
*member_zone->prev_next_ptr = member_zone->next;
574-
}
575-
if(member_zone->next) {
576-
member_zone->next->prev_next_ptr = member_zone->prev_next_ptr;
577-
}
571+
/* member_zone->member_id == NULL because catalog member zones are
572+
* deleted either through catalog_del_consumer_member_zone() or
573+
* through xfrd_del_catalog_producer_member(), which both set
574+
* member_id to NULL.
575+
*/
576+
assert(member_zone->member_id == NULL);
578577
if(member_zone->member_id) {
579578
region_recycle(opt->region, (void*)member_zone->member_id,
580579
dname_total_size(member_zone->member_id));
@@ -944,8 +943,6 @@ catalog_member_zone_create(region_type* region)
944943
member_zone->options.part_of_config = 0;
945944
member_zone->options.is_catalog_member_zone = 1;
946945
member_zone->member_id = NULL;
947-
member_zone->prev_next_ptr = NULL;
948-
member_zone->next = NULL;
949946
member_zone->node = *RBTREE_NULL;
950947
member_zone->node.key = (void*)member_zone;
951948
return member_zone;

options.h

+1-3
Original file line numberDiff line numberDiff line change
@@ -351,9 +351,7 @@ struct zone_options {
351351
struct catalog_member_zone {
352352
struct zone_options options;
353353
const struct dname* member_id;
354-
struct catalog_member_zone** prev_next_ptr;
355-
struct catalog_member_zone* next;
356-
/* member_id index in the associated catalog producer */
354+
/* node in the associated catalog consumer or producer zone */
357355
rbnode_type node;
358356
} ATTR_PACKED;
359357

remote.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -1058,7 +1058,7 @@ print_zonestatus(RES* ssl, xfrd_state_type* xfrd, struct zone_options* zo)
10581058
read_uint32(rdata_atom_data(
10591059
zone->soa_rrset->rrs[0].rdatas[2])),
10601060
consumer_zone
1061-
? consumer_zone->n_member_zones : 0))
1061+
? consumer_zone->member_ids.count : 0))
10621062
return 0;
10631063

10641064
} else if(!ssl_printf(ssl, "\n"))

0 commit comments

Comments
 (0)