]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
temporary rewrite of answerfrom code to see if that helps to fix the strange memory bug
authorJelte Jansen <jeltejan@NLnetLabs.nl>
Wed, 16 Feb 2005 12:49:19 +0000 (12:49 +0000)
committerJelte Jansen <jeltejan@NLnetLabs.nl>
Wed, 16 Feb 2005 12:49:19 +0000 (12:49 +0000)
host2str.c
ldns/packet.h
net.c
packet.c
run-test10.c
run-test7.c

index 2a2b5adea19aa28a244a13249350196988cd3d8a..ad4e3e38085776ae1f3b0089e373bbe2f0ced972 100644 (file)
@@ -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);
        }
index 57a0047e5ecf279c429fa72537d9df4013cedd99..e76edba8e1885ea6fffad2bdb4ff354d43b9149a 100644 (file)
@@ -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 6865e70f8def1455335bc07e5ea061070dc2c0fe..81ffb4def963c272b0da3820692b3b07483e9753 100644 (file)
--- 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;
                }
        }
index 1b13e9a91b8706723ad8b7b33bfd97f21045da59..6e70764b9e0effdbc2167f9de434a33c8f0e6a81 100644 (file)
--- 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;
 }
 
index 7a9cd03ba722239725e996895a3a3c3becc1e0ed..bf3d0cc7ca7e391e8a341fc13c7dd79ee1021643 100644 (file)
@@ -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;
 }
index c1b0668036d662e472e9f83389114984f29ea7d4..99af4049b32b8d29ad5f42bf00c930f2f1b5b49b 100644 (file)
@@ -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;
 }