diff --git a/src/other/debug.h b/src/other/debug.h
index 158eb97c7a9f66bfe19ad9cefc0b7ddaefbf733c..cc41773dbddbbe024d6f8cba2c5fe32a53141ca6 100644
--- a/src/other/debug.h
+++ b/src/other/debug.h
@@ -9,9 +9,9 @@
 //#define CUCKOO_DEBUG
 //#define CUCKOO_DEBUG_HASH
 //#define ZP_DEBUG
-#define NS_DEBUG
+//#define NS_DEBUG
 //#define ZDB_DEBUG
-#define ZDB_DEBUG_INSERT_CHECK
+//#define ZDB_DEBU	G_INSERT_CHECK
 //#define ZN_DEBUG
 //#define ZP_DEBUG_PARSE
 //#define CUTE_DEBUG
diff --git a/src/server/name-server.c b/src/server/name-server.c
index 68a1f4f9f1b1fbd842dfabf0602893b8624978b3..1c7fb32261a06b844d79a1fc4ae0c42fe072022a 100644
--- a/src/server/name-server.c
+++ b/src/server/name-server.c
@@ -288,6 +288,7 @@ void ns_put_rrset( ldns_rr_list *rrset, const ldns_rdf *name,
 				ldns_rr_list_push_rr(copied_rrs, rr);
 			}
 			ns_try_put_rrset(rrset_new, section, tc, pkt);
+			ldns_rr_list_free(rrset_new);
 		} else {
 			ns_try_put_rrset(rrset, section, tc, pkt);
 		}
@@ -638,9 +639,10 @@ void ns_answer( zdb_database *zdb, const ldns_rr *question, ldns_pkt *response,
 	//const zn_node *node = ns_find_node_in_zone(zone, &qname, &labels_found);
 	const zn_node *node = zdb_find_name_in_zone(zone, qname);
 	int cname = 0;
+	ldns_rdf *qname_old = NULL;
 
 	while (1) {
-		ldns_rdf *qname_old = ldns_rdf_clone(qname);
+		qname_old = ldns_rdf_clone(qname);
 		uint labels = ldns_dname_label_count(qname);
 		uint labels_found = labels;
 
@@ -727,6 +729,7 @@ void ns_answer( zdb_database *zdb, const ldns_rr *question, ldns_pkt *response,
 			}
 			cname = 1;
 			if (node == NULL) {
+				ldns_rdf_deep_free(qname_old);
 				continue;	// hm, infinite loop better than goto? :)
 			}
 		}
@@ -738,6 +741,7 @@ void ns_answer( zdb_database *zdb, const ldns_rr *question, ldns_pkt *response,
 	}
 
 	ldns_rdf_deep_free(qname);
+	ldns_rdf_deep_free(qname_old);
 	debug_ns("Size of response packet: %u\n", ldns_pkt_size(response));
 }
 
diff --git a/src/server/socket-manager.c b/src/server/socket-manager.c
index 9dd775553e3a5fdb472704de7a1fa2247f202e0f..ad5bf64044519d5b88305e15bc13cb964fb16c99 100644
--- a/src/server/socket-manager.c
+++ b/src/server/socket-manager.c
@@ -334,6 +334,9 @@ void sm_destroy( sm_manager **manager )
     }
     free((*manager)->workers);
 
+	// Destroy master worker
+	sm_worker_deinit(&(*manager)->master);
+
     // Free dispatchers
     dpt_destroy(&(*manager)->master_dpt);
     dpt_destroy(&(*manager)->workers_dpt);
diff --git a/src/zone/zone-database.c b/src/zone/zone-database.c
index aaaad72f0ba7eb2783d5fb809c97c30aa6ccae5a..105621c417661444b90a41190dabbab3b53338dc 100644
--- a/src/zone/zone-database.c
+++ b/src/zone/zone-database.c
@@ -535,7 +535,7 @@ void zdb_adjust_additional_all( zdb_zone *zone, zn_node *node )
 ldns_rdf *zdb_dname_list_find( ldns_rdf **list, size_t count, ldns_rdf *name )
 {
 	int i = 0;
-	int found;
+	int found = 0;
 	while (i < count && (found = ldns_dname_match_wildcard(list[i], name))
 						!= 1) {
 		++i;
diff --git a/src/zone/zone-node.c b/src/zone/zone-node.c
index 55679d1b3ce80bfaae0a1d92942ddaab6d3d68c2..4b703f8910d85b290b0a900ddcd6459ad5f7e025 100644
--- a/src/zone/zone-node.c
+++ b/src/zone/zone-node.c
@@ -222,7 +222,7 @@ int zn_add_referrer_node( zn_node *node, const zn_node *referrer )
 
 int zn_has_additional( const zn_node *node )
 {
-	return (zn_has_mx(node) + zn_has_ns(node));
+	return (zn_has_mx(node) + zn_has_ns(node) + zn_has_srv(node));
 }
 
 /*----------------------------------------------------------------------------*/
@@ -484,6 +484,7 @@ int zn_add_ref( zn_node *node, ldns_rdf *name, ldns_rr_type type,
 		ar = zn_create_ar_rrsets_for_cname(ref_node);
 	}
 	if (ar == NULL) {
+		skip_destroy_list(&(node->ref.additional), NULL, zn_dtor_ar_rrsets);
 		return -4;
 	}
 
@@ -494,7 +495,6 @@ int zn_add_ref( zn_node *node, ldns_rdf *name, ldns_rr_type type,
 		zn_destroy_ar_rrsets(&ar);
 	}
 	zn_flags_set(&node->flags, flag);
-	debug_zn("Node %p has SRV flag: %d\n", node, zn_has_srv(node));
 
 	debug_zn("zn_add_ref(%p, %p, %s)\n", node, ref_rrset,
 			 ldns_rr_type2str(type));
@@ -738,6 +738,10 @@ void zn_destroy( zn_node **node )
 	if (zn_is_delegation_point(*node)) {
 		ldns_rr_list_free((*node)->ref.glues);
 	}
+	if ((*node)->referrers != NULL) {
+		da_destroy((*node)->referrers);
+		free((*node)->referrers);
+	}
     free(*node);
     *node = NULL;
 }