From: Miek Gieben Date: Thu, 9 Jun 2005 09:33:56 +0000 (+0000) Subject: mem stuff and naming X-Git-Tag: release-0.65~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59835716e9d53496405b76ccc8ed6af216fa7b0d;p=thirdparty%2Fldns.git mem stuff and naming --- diff --git a/doc/function_manpages b/doc/function_manpages index b0a31c3f..6fa2940e 100644 --- a/doc/function_manpages +++ b/doc/function_manpages @@ -112,11 +112,9 @@ ldns_pkt, ldns_pkt_section, ldns_pkt_type | ldns_pkt_new, ldns_pkt_id, ldns_pkt_ ldns_pkt_new, ldns_pkt_free, ldns_pkt_print, ldns_pkt_query_new, ldns_pkt_query_new_frm_str, ldns_pkt_reply_type | ldns_pkt # gets -ldns_pkt_id, ldns_pkt_qr, ldns_pkt_aa, ldns_pkt_tc, ldns_pkt_rd, ldns_pkt_cd, ldns_pkt_ra, ldns_pkt_ad, ldns_pkt_opcode, ldns_pkt_rcode, ldns_pkt_qdcount, ldns_pkt_ancount, ldns_pkt_nscount, ldns_pkt_arcount, ldns_pkt_answerfrom, ldns_pkt_when, ldns_pkt_querytime, ldns_pkt_size, ldns_pkt_tsig, ldns_pkt_question, ldns_pkt_answer, ldns_pkt_authority, ldns_pkt_additional, ldns_pkt_xxsection, ldns_pkt_rr_list_by_name, ldns_pkt_rr_list_by_type, ldns_pkt_rr_list_by_name_and_type | ldns_pkt - +ldns_pkt_id, ldns_pkt_qr, ldns_pkt_aa, ldns_pkt_tc, ldns_pkt_rd, ldns_pkt_cd, ldns_pkt_ra, ldns_pkt_ad, ldns_pkt_opcode, ldns_pkt_rcode, ldns_pkt_qdcount, ldns_pkt_ancount, ldns_pkt_nscount, ldns_pkt_arcount, ldns_pkt_answerfrom, ldns_pkt_when, ldns_pkt_querytime, ldns_pkt_size, ldns_pkt_tsig, ldns_pkt_question, ldns_pkt_answer, ldns_pkt_authority, ldns_pkt_additional, ldns_pkt_get_section, ldns_pkt_rr_list_by_name, ldns_pkt_rr_list_by_type, ldns_pkt_rr_list_by_name_and_type | ldns_pkt # sets -ldns_pkt_set_flags, ldns_pkt_set_id, ldns_pkt_set_qr, ldns_pkt_set_aa, ldns_pkt_set_tc, ldns_pkt_set_rd, ldns_pkt_set_cd, ldns_pkt_set_ra, ldns_pkt_set_ad, ldns_pkt_set_opcode, ldns_pkt_set_rcode, ldns_pkt_set_qdcount, ldns_pkt_set_ancount, ldns_pkt_set_nscount, ldns_pkt_set_arcount, ldns_pkt_set_answerfrom, ldns_pkt_set_querytime, ldns_pkt_set_size, ldns_pkt_set_when, ldns_pkt_set_xxcount, ldns_pkt_set_tsig | ldns_pkt - +ldns_pkt_set_flags, ldns_pkt_set_id, ldns_pkt_set_qr, ldns_pkt_set_aa, ldns_pkt_set_tc, ldns_pkt_set_rd, ldns_pkt_set_cd, ldns_pkt_set_ra, ldns_pkt_set_ad, ldns_pkt_set_opcode, ldns_pkt_set_rcode, ldns_pkt_set_qdcount, ldns_pkt_set_ancount, ldns_pkt_set_nscount, ldns_pkt_set_arcount, ldns_pkt_set_answerfrom, ldns_pkt_set_querytime, ldns_pkt_set_size, ldns_pkt_set_when, ldns_pkt_set_section_count, ldns_pkt_set_tsig | ldns_pkt # EDNS0 ldns_pkt_edns, ldns_pkt_edns_udp_size, ldns_pkt_edns_extended_rcode, ldns_pkt_edns_version, ldns_pkt_edns_z, ldns_pkt_edns_data, ldns_pkt_set_edns_udp_size, ldns_pkt_set_edns_extended_rcode, ldns_pkt_set_edns_version, ldns_pkt_set_edns_z, ldns_pkt_set_edns_data | ldns_pkt diff --git a/ldns/packet.h b/ldns/packet.h index 28383223..c45c973c 100644 --- a/ldns/packet.h +++ b/ldns/packet.h @@ -148,7 +148,7 @@ ldns_rr_list *ldns_pkt_question(const ldns_pkt *p); ldns_rr_list *ldns_pkt_answer(const ldns_pkt *p); ldns_rr_list *ldns_pkt_authority(const ldns_pkt *p); ldns_rr_list *ldns_pkt_additional(const ldns_pkt *p); -ldns_rr_list *ldns_pkt_xxsection(ldns_pkt *p, ldns_pkt_section s); +ldns_rr_list *ldns_pkt_get_section(ldns_pkt *p, ldns_pkt_section s); ldns_rr_list *ldns_pkt_rr_list_by_name(ldns_pkt *p, ldns_rdf *r, ldns_pkt_section s); ldns_rr_list *ldns_pkt_rr_list_by_type(ldns_pkt *p, ldns_rr_type t, ldns_pkt_section s); ldns_rr_list *ldns_pkt_rr_list_by_name_and_type(ldns_pkt *packet, ldns_rdf *ownername, ldns_rr_type type, ldns_pkt_section sec); @@ -179,7 +179,7 @@ void ldns_pkt_set_answerfrom(ldns_pkt *p, ldns_rdf *r); void ldns_pkt_set_querytime(ldns_pkt *p, uint32_t t); void ldns_pkt_set_size(ldns_pkt *p, size_t s); void ldns_pkt_set_when(ldns_pkt *p, char *w); -void ldns_pkt_set_xxcount(ldns_pkt *p, ldns_pkt_section s, uint16_t x); +void ldns_pkt_set_section_count(ldns_pkt *p, ldns_pkt_section s, uint16_t x); void ldns_pkt_set_tsig(ldns_pkt *p, ldns_rr *t); /** diff --git a/ldns/resolver.h b/ldns/resolver.h index 2201fac3..dad69c0f 100644 --- a/ldns/resolver.h +++ b/ldns/resolver.h @@ -252,11 +252,17 @@ ldns_resolver* ldns_resolver_new_frm_fp(FILE *fp); ldns_resolver* ldns_resolver_new_frm_file(const char *filename); /** - * Frees the allocated space for this resolver and all it's data + * Frees the allocated space for this resolver * \param res resolver to free */ void ldns_resolver_free(ldns_resolver *res); +/** + * Frees the allocated space for this resolver and all it's data + * \param res resolver to free + */ +void ldns_resolver_deep_free(ldns_resolver *res); + /** * Prepares the resolver for an axfr query * The query is sent and the answers can be read with ldns_axfr_next diff --git a/ldns/rr.h b/ldns/rr.h index 38208154..7b2e3f70 100644 --- a/ldns/rr.h +++ b/ldns/rr.h @@ -434,7 +434,8 @@ void ldns_rr_list_free(ldns_rr_list *rr_list); void ldns_rr_list_deep_free(ldns_rr_list *rr_list); /** - * concatenates two ldns_rr_lists together. + * concatenates two ldns_rr_lists together. This modifies + * *left (to extend it and add the pointers from *right). * \param[in] left the leftside * \param[in] right the rightside * \return a left with right concatenated to it @@ -442,7 +443,8 @@ void ldns_rr_list_deep_free(ldns_rr_list *rr_list); ldns_status ldns_rr_list_cat(ldns_rr_list *left, ldns_rr_list *right); /** - * concatenates two ldns_rr_lists together, but makes clones of the rr's (instead of pointer copying). + * concatenates two ldns_rr_lists together, but makes clones of the rr's + * (instead of pointer copying). * \param[in] left the leftside * \param[in] right the rightside * \return a new rr_list with leftside/rightside concatenated diff --git a/packet.c b/packet.c index 0bff87f5..6ef913e0 100644 --- a/packet.c +++ b/packet.c @@ -138,12 +138,12 @@ ldns_pkt_all(ldns_pkt *packet) ldns_rr_list *all; all = ldns_rr_list_cat_clone( - ldns_pkt_xxsection(packet, LDNS_SECTION_QUESTION), - ldns_pkt_xxsection(packet, LDNS_SECTION_ANSWER)); + ldns_pkt_get_section(packet, LDNS_SECTION_QUESTION), + ldns_pkt_get_section(packet, LDNS_SECTION_ANSWER)); all = ldns_rr_list_cat_clone(all, - ldns_pkt_xxsection(packet, LDNS_SECTION_AUTHORITY)); + ldns_pkt_get_section(packet, LDNS_SECTION_AUTHORITY)); all = ldns_rr_list_cat_clone(all, - ldns_pkt_xxsection(packet, LDNS_SECTION_ADDITIONAL)); + ldns_pkt_get_section(packet, LDNS_SECTION_ADDITIONAL)); return all; } @@ -153,10 +153,10 @@ ldns_pkt_all_noquestion(ldns_pkt *packet) ldns_rr_list *all, *all2; all = ldns_rr_list_cat_clone( - ldns_pkt_xxsection(packet, LDNS_SECTION_ANSWER), - ldns_pkt_xxsection(packet, LDNS_SECTION_AUTHORITY)); + ldns_pkt_get_section(packet, LDNS_SECTION_ANSWER), + ldns_pkt_get_section(packet, LDNS_SECTION_AUTHORITY)); all2 = ldns_rr_list_cat_clone(all, - ldns_pkt_xxsection(packet, LDNS_SECTION_ADDITIONAL)); + ldns_pkt_get_section(packet, LDNS_SECTION_ADDITIONAL)); ldns_rr_list_free(all); return all2; @@ -245,7 +245,7 @@ ldns_pkt_rr_list_by_name(ldns_pkt *packet, ldns_rdf *ownername, ldns_pkt_section return NULL; } - rrs = ldns_pkt_xxsection(packet, sec); + rrs = ldns_pkt_get_section(packet, sec); new = ldns_rr_list_new(); ret = NULL; @@ -274,7 +274,7 @@ ldns_pkt_rr_list_by_type(ldns_pkt *packet, ldns_rr_type type, ldns_pkt_section s return NULL; } - rrs = ldns_pkt_xxsection(packet, sec); + rrs = ldns_pkt_get_section(packet, sec); new = ldns_rr_list_new(); ret = NULL; @@ -311,7 +311,7 @@ ldns_pkt_rr_list_by_name_and_type(ldns_pkt *packet, ldns_rdf *ownername, ldns_rr return NULL; } - rrs = ldns_pkt_xxsection(packet, sec); + rrs = ldns_pkt_get_section(packet, sec); new = ldns_rr_list_new(); ret = NULL; @@ -342,7 +342,7 @@ ldns_pkt_rr(ldns_pkt *pkt, ldns_pkt_section sec, ldns_rr *rr) uint16_t rr_count; uint16_t i; - rrs = ldns_pkt_xxsection(pkt, sec); + rrs = ldns_pkt_get_section(pkt, sec); if (!rrs) { return NULL; } @@ -359,7 +359,7 @@ ldns_pkt_rr(ldns_pkt *pkt, ldns_pkt_section sec, ldns_rr *rr) } uint16_t -ldns_pkt_xxcount(const ldns_pkt *packet, ldns_pkt_section s) +ldns_pkt_section_count(const ldns_pkt *packet, ldns_pkt_section s) { switch(s) { case LDNS_SECTION_QUESTION: @@ -385,7 +385,7 @@ ldns_pkt_xxcount(const ldns_pkt *packet, ldns_pkt_section s) } ldns_rr_list * -ldns_pkt_xxsection(ldns_pkt *packet, ldns_pkt_section s) +ldns_pkt_get_section(ldns_pkt *packet, ldns_pkt_section s) { switch(s) { case LDNS_SECTION_QUESTION: @@ -552,7 +552,7 @@ ldns_pkt_set_edns_data(ldns_pkt *packet, ldns_rdf *data) } void -ldns_pkt_set_xxcount(ldns_pkt *packet, ldns_pkt_section s, uint16_t count) +ldns_pkt_set_section_count(ldns_pkt *packet, ldns_pkt_section s, uint16_t count) { switch(s) { case LDNS_SECTION_QUESTION: @@ -592,7 +592,7 @@ ldns_pkt_push_rr(ldns_pkt *packet, ldns_pkt_section section, ldns_rr *rr) ldns_rr_list *rrs; /* get the right rr list for this section */ - rrs = ldns_pkt_xxsection(packet, section); + rrs = ldns_pkt_get_section(packet, section); if (!rrs) { return false; } @@ -684,10 +684,10 @@ ldns_pkt_new() ldns_pkt_set_querytime(packet, 0); ldns_pkt_set_answerfrom(packet, NULL); ldns_pkt_set_when(packet, NULL); - ldns_pkt_set_xxcount(packet, LDNS_SECTION_QUESTION, 0); - ldns_pkt_set_xxcount(packet, LDNS_SECTION_ANSWER, 0); - ldns_pkt_set_xxcount(packet, LDNS_SECTION_AUTHORITY, 0); - ldns_pkt_set_xxcount(packet, LDNS_SECTION_ADDITIONAL, 0); + ldns_pkt_set_section_count(packet, LDNS_SECTION_QUESTION, 0); + ldns_pkt_set_section_count(packet, LDNS_SECTION_ANSWER, 0); + ldns_pkt_set_section_count(packet, LDNS_SECTION_AUTHORITY, 0); + ldns_pkt_set_section_count(packet, LDNS_SECTION_ADDITIONAL, 0); ldns_pkt_set_edns_udp_size(packet, 0); ldns_pkt_set_edns_extended_rcode(packet, 0); diff --git a/resolver.c b/resolver.c index fa67d71e..b4366ea4 100644 --- a/resolver.c +++ b/resolver.c @@ -209,8 +209,8 @@ ldns_resolver_push_nameserver(ldns_resolver *r, ldns_rdf *n) /* set the new value in the resolver */ ldns_resolver_set_nameservers(r, nameservers); - /* slide n in its slot */ - nameservers[ns_count] = ldns_rdf_clone(n); + /* slide n in its slot. */ + nameservers[ns_count] = n; ldns_resolver_incr_nameserver_count(r); return LDNS_STATUS_OK; } @@ -559,7 +559,7 @@ ldns_resolver_new_frm_file(const char *filename) } void -ldns_resolver_free(ldns_resolver *res) +ldns_resolver_deep_free(ldns_resolver *res) { size_t i; @@ -569,12 +569,22 @@ ldns_resolver_free(ldns_resolver *res) ldns_rdf_deep_free(res->_searchlist[i]); } } - LDNS_FREE(res->_searchlist); if (res->_nameservers) { for (i = 0; i < res->_nameserver_count; i++) { ldns_rdf_deep_free(res->_nameservers[i]); } } + LDNS_FREE(res->_searchlist); + LDNS_FREE(res->_nameservers); + LDNS_FREE(res); + } +} + +void +ldns_resolver_free(ldns_resolver *res) +{ + if (res) { + LDNS_FREE(res->_searchlist); LDNS_FREE(res->_nameservers); LDNS_FREE(res); } diff --git a/rr.c b/rr.c index 23400bde..9c0e1453 100644 --- a/rr.c +++ b/rr.c @@ -490,8 +490,6 @@ ldns_rr_list_cat(ldns_rr_list *left, ldns_rr_list *right) uint16_t l_rr_count; uint16_t i; - r_rr_count = 0; - if (left) { l_rr_count = ldns_rr_list_rr_count(left); } else { @@ -501,7 +499,7 @@ ldns_rr_list_cat(ldns_rr_list *left, ldns_rr_list *right) if (right) { r_rr_count = ldns_rr_list_rr_count(right); } else { - return LDNS_STATUS_NULL; + r_rr_count = 0; } if (l_rr_count + r_rr_count > LDNS_MAX_RR ) { @@ -525,7 +523,6 @@ ldns_rr_list_cat_clone(ldns_rr_list *left, ldns_rr_list *right) ldns_rr_list *cat; l_rr_count = 0; - r_rr_count = 0; if (left) { l_rr_count = ldns_rr_list_rr_count(left); @@ -536,7 +533,7 @@ ldns_rr_list_cat_clone(ldns_rr_list *left, ldns_rr_list *right) if (right) { r_rr_count = ldns_rr_list_rr_count(right); } else { - return NULL; + r_rr_count = 0; } if (l_rr_count + r_rr_count > LDNS_MAX_RR ) {