}
/* no longer needed */
- ldns_rr_list_free(rrset_clone);
+ ldns_rr_list_deep_free(rrset_clone);
ldns_buffer_free(rawsig_buf);
ldns_buffer_free(verify_buf);
if (ldns_rr_list_rr_count(validkeys) == 0) {
/* no longer needed */
/*
- ldns_rr_list_free(rrset_clone);
+ ldns_rr_list_deep_free(rrset_clone);
*/
ldns_buffer_free(rawsig_buf);
ldns_buffer_free(verify_buf);
*/
void ldns_rr_list_free(ldns_rr_list *rr_list);
+/**
+ * frees an rr_list structure and all rrs contained therein.
+ * \param[in] rr_list the list to free
+ * \return void
+ */
+void ldns_rr_list_deep_free(ldns_rr_list *rr_list);
+
/**
* concatenates two ldns_rr_lists together.
* \param[in] left the leftside
ldns_rr_list *
ldns_pkt_all_noquestion(ldns_pkt *packet)
{
- ldns_rr_list *all;
+ ldns_rr_list *all, *all2;
all = ldns_rr_list_cat(
ldns_pkt_xxsection(packet, LDNS_SECTION_ANSWER),
ldns_pkt_xxsection(packet, LDNS_SECTION_AUTHORITY));
- all = ldns_rr_list_cat(all,
+ all2 = ldns_rr_list_cat(all,
ldns_pkt_xxsection(packet, LDNS_SECTION_ADDITIONAL));
- return all;
+
+ ldns_rr_list_free(all);
+ return all2;
}
size_t
}
}
if (!ret) {
- ldns_rr_list_free(new);
+ ldns_rr_list_deep_free(new);
}
return ret;
) == 0
) {
/* types match */
- ldns_rr_list_push_rr(new, ldns_rr_list_rr(rrs, i));
+ ldns_rr_list_push_rr(new, ldns_rr_deep_clone(ldns_rr_list_rr(rrs, i)));
ret = new;
}
}
{
if (packet) {
LDNS_FREE(packet->_header);
- ldns_rr_list_free(packet->_question);
- ldns_rr_list_free(packet->_answer);
- ldns_rr_list_free(packet->_authority);
- ldns_rr_list_free(packet->_additional);
+ ldns_rr_list_deep_free(packet->_question);
+ ldns_rr_list_deep_free(packet->_answer);
+ ldns_rr_list_deep_free(packet->_authority);
+ ldns_rr_list_deep_free(packet->_additional);
ldns_rr_free(packet->_tsig_rr);
LDNS_FREE(packet);
}
ldns_pkt_set_tsig(new_pkt, ldns_pkt_tsig(pkt));
/* todo: edns? */
-
+ ldns_rr_list_deep_free(new_pkt->_question);
+ ldns_rr_list_deep_free(new_pkt->_answer);
+ ldns_rr_list_deep_free(new_pkt->_authority);
+ ldns_rr_list_deep_free(new_pkt->_additional);
new_pkt->_question = ldns_rr_list_deep_clone(ldns_pkt_question(pkt));
new_pkt->_answer = ldns_rr_list_deep_clone(ldns_pkt_answer(pkt));
new_pkt->_authority = ldns_rr_list_deep_clone(ldns_pkt_authority(pkt));