From: Jelte Jansen Date: Wed, 16 Feb 2005 12:49:19 +0000 (+0000) Subject: temporary rewrite of answerfrom code to see if that helps to fix the strange memory bug X-Git-Tag: release-0.50~407 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=803c1ff94ab8f1e80bc1bdc24618cdffae74735b;p=thirdparty%2Fldns.git temporary rewrite of answerfrom code to see if that helps to fix the strange memory bug --- diff --git a/host2str.c b/host2str.c index 2a2b5ade..ad4e3e38 100644 --- a/host2str.c +++ b/host2str.c @@ -939,9 +939,9 @@ ldns_pkt2buffer_str(ldns_buffer *output, ldns_pkt *pkt) ldns_buffer_printf(output, "\n"); /* add some futher fields */ ldns_buffer_printf(output, ";; Query time: %d msec\n", ldns_pkt_querytime(pkt)); - ldns_buffer_printf(output, ";; SERVER: %s\n", ldns_rdf2str(ldns_pkt_answerfrom(pkt))); -#if 0 -#endif + if (ldns_pkt_answerfrom(pkt)) { + ldns_buffer_printf(output, ";; Server: %s\n", ldns_pkt_answerfrom(pkt)); + } } else { return ldns_buffer_status(output); } diff --git a/ldns/packet.h b/ldns/packet.h index 57a0047e..e76edba8 100644 --- a/ldns/packet.h +++ b/ldns/packet.h @@ -67,8 +67,7 @@ struct ldns_struct_pkt /* extra items needed in a packet */ /** \brief the size in bytes of the pkt */ uint16_t _answersize; - /** \brief the server ip */ - ldns_rdf *_answerfrom; + char *_answerfrom; /** \brief query duration */ uint32_t _querytime; /** \brief query data */ @@ -123,7 +122,7 @@ uint16_t ldns_pkt_qdcount(ldns_pkt *); uint16_t ldns_pkt_ancount(ldns_pkt *); uint16_t ldns_pkt_nscount(ldns_pkt *); uint16_t ldns_pkt_arcount(ldns_pkt *); -ldns_rdf *ldns_pkt_answerfrom(ldns_pkt *packet); +char *ldns_pkt_answerfrom(ldns_pkt *packet); uint32_t ldns_pkt_querytime(ldns_pkt *); ldns_rr_list *ldns_pkt_question(ldns_pkt *packet); @@ -145,7 +144,7 @@ void ldns_pkt_set_qdcount(ldns_pkt *, uint16_t); void ldns_pkt_set_ancount(ldns_pkt *, uint16_t); void ldns_pkt_set_nscount(ldns_pkt *, uint16_t); void ldns_pkt_set_arcount(ldns_pkt *, uint16_t); -void ldns_pkt_set_answerfrom(ldns_pkt *, ldns_rdf *); +void ldns_pkt_set_answerfrom(ldns_pkt *, char *); void ldns_pkt_set_querytime(ldns_pkt *, uint32_t); /** diff --git a/net.c b/net.c index 6865e70f..81ffb4de 100644 --- a/net.c +++ b/net.c @@ -109,10 +109,7 @@ ldns_send(ldns_resolver *r, ldns_pkt *query_pkt) ldns_pkt_set_querytime(reply, ((tv_e.tv_sec - tv_s.tv_sec) * 1000) + (tv_e.tv_usec - tv_s.tv_usec) / 1000); - printf("%x", ns_array[i]); - printf("the answerfrom server\n"); - ldns_rdf_print(stdout, ns_array[i]); - ldns_pkt_set_answerfrom(reply, ns_array[i]); + ldns_pkt_set_answerfrom(reply, ldns_rdf2str(ns_array[i])); break; } } diff --git a/packet.c b/packet.c index 1b13e9a9..6e70764b 100644 --- a/packet.c +++ b/packet.c @@ -131,18 +131,18 @@ ldns_pkt_additional(ldns_pkt *packet) return packet->_additional; } -ldns_rdf * -ldns_pkt_answerfrom(ldns_pkt *packet) -{ - return packet->_answerfrom; -} - uint32_t ldns_pkt_querytime(ldns_pkt *packet) { return packet->_querytime; } +char * +ldns_pkt_answerfrom(ldns_pkt *packet) +{ + return packet->_answerfrom; +} + uint16_t ldns_pkt_xxcount(ldns_pkt *packet, ldns_pkt_section s) { @@ -261,15 +261,16 @@ ldns_pkt_set_arcount(ldns_pkt *packet, uint16_t arcount) } void -ldns_pkt_set_answerfrom(ldns_pkt *packet, ldns_rdf *answerfrom) +ldns_pkt_set_querytime(ldns_pkt *packet, uint32_t time) { - packet->_answerfrom = answerfrom; + packet->_querytime = time; } void -ldns_pkt_set_querytime(ldns_pkt *packet, uint32_t time) +ldns_pkt_set_answerfrom(ldns_pkt *packet, char *answerfrom) { - packet->_querytime = time; + /* TODO if exists free? */ + packet->_answerfrom = answerfrom; } /** @@ -334,7 +335,6 @@ ldns_pkt_new() packet->_additional = ldns_rr_list_new(); ldns_pkt_set_querytime(packet, 0); - packet->_answerfrom = MALLOC(ldns_rdf); ldns_pkt_set_answerfrom(packet, NULL); return packet; @@ -439,6 +439,8 @@ ldns_pkt_query_new_frm_str(const char *name, ldns_rr_type rr_type, ldns_rr_class return NULL; } + ldns_pkt_set_answerfrom(packet, NULL); + return packet; } diff --git a/run-test10.c b/run-test10.c index 7a9cd03b..bf3d0cc7 100644 --- a/run-test10.c +++ b/run-test10.c @@ -46,15 +46,12 @@ main(void) name = ldns_dname_new_frm_str("www.miek.nl"); pkt = ldns_pkt_query_new(name, LDNS_RR_TYPE_AAAA, 0, LDNS_RD); - ldns_pkt_set_answerfrom(pkt, name); ldns_pkt_print(stdout, pkt); pkt = ldns_pkt_query_new(name, LDNS_RR_TYPE_AAAA, 0, LDNS_RD); - ldns_pkt_set_answerfrom(pkt, name); ldns_pkt_print(stdout, pkt); pkt = ldns_pkt_query_new(name, LDNS_RR_TYPE_AAAA, 0, LDNS_RD); - ldns_pkt_set_answerfrom(pkt, name); ldns_pkt_print(stdout, pkt); return 0; } diff --git a/run-test7.c b/run-test7.c index c1b06680..99af4049 100644 --- a/run-test7.c +++ b/run-test7.c @@ -89,5 +89,15 @@ main(int argc, char **argv) /* print the resulting pkt to stdout */ ldns_pkt_print(stdout, pkt); + pkt = ldns_resolver_send(res, qname, ldns_rr_get_type_by_name(type), 0, LDNS_RD); + + if (!pkt) { + printf("error pkt sending\n"); + return 1; + } + + /* print the resulting pkt to stdout */ + ldns_pkt_print(stdout, pkt); + return 0; }