]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
Various changes from Vitaly Magerya
authorWillem Toorop <willem@NLnetLabs.nl>
Wed, 22 Aug 2012 12:13:32 +0000 (12:13 +0000)
committerWillem Toorop <willem@NLnetLabs.nl>
Wed, 22 Aug 2012 12:13:32 +0000 (12:13 +0000)
Changelog
packet.c
resolver.c

index 8d0c67c24a46f55834cbb8de0887c15f5795acb9..e5a8ab533ff244911262589109b9b71354b5bdeb 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -1,4 +1,7 @@
 1.6.14
+       * Let ldns_resolver_nameservers_randomize keep nameservers and rtt's
+         in sync.
+       * Let ldns_pkt_push_rr now return false on (memory) errors.
        * Make buffer_export comply to documentation and fix buffer2str
        * Various improvements and fixes of pyldns from Katel Slany
          now documented in their own Changelog.
index 3398d8f3aa2d313ab05d10fe9ad1c8358be4b93f..68a6704cee4672decac10a2122055e8f7da24bd1 100644 (file)
--- a/packet.c
+++ b/packet.c
@@ -649,19 +649,27 @@ ldns_pkt_push_rr(ldns_pkt *packet, ldns_pkt_section section, ldns_rr *rr)
 {
        switch(section) {
                case LDNS_SECTION_QUESTION:
-                       ldns_rr_list_push_rr(ldns_pkt_question(packet), rr);
+                       if (!ldns_rr_list_push_rr(ldns_pkt_question(packet), rr)) {
+                               return false;
+                       }
                        ldns_pkt_set_qdcount(packet, ldns_pkt_qdcount(packet) + 1);
                        break;
                case LDNS_SECTION_ANSWER:
-                       ldns_rr_list_push_rr(ldns_pkt_answer(packet), rr);
+                       if (!ldns_rr_list_push_rr(ldns_pkt_answer(packet), rr)) {
+                               return false;
+                       }
                        ldns_pkt_set_ancount(packet, ldns_pkt_ancount(packet) + 1);
                        break;
                case LDNS_SECTION_AUTHORITY:
-                       ldns_rr_list_push_rr(ldns_pkt_authority(packet), rr);
+                       if (!ldns_rr_list_push_rr(ldns_pkt_authority(packet), rr)) {
+                               return false;
+                       }
                        ldns_pkt_set_nscount(packet, ldns_pkt_nscount(packet) + 1);
                        break;
                case LDNS_SECTION_ADDITIONAL:
-                       ldns_rr_list_push_rr(ldns_pkt_additional(packet), rr);
+                       if (!ldns_rr_list_push_rr(ldns_pkt_additional(packet), rr)) {
+                               return false;
+                       }
                        ldns_pkt_set_arcount(packet, ldns_pkt_arcount(packet) + 1);
                        break;
                case LDNS_SECTION_ANY:
index 8f4f4d418e54d17f790eb6574d53d881c430c7e8..707568cfb096bc36db3a460b306329ffe0f06d66 100644 (file)
@@ -1340,17 +1340,22 @@ void
 ldns_resolver_nameservers_randomize(ldns_resolver *r)
 {
        uint16_t i, j;
-       ldns_rdf **ns, *tmp;
+       ldns_rdf **ns, *tmpns;
+       size_t *rtt, tmprtt;
 
        /* should I check for ldns_resolver_random?? */
        assert(r != NULL);
 
        ns = ldns_resolver_nameservers(r);
+       rtt = ldns_resolver_rtt(r);
        for (i = 0; i < ldns_resolver_nameserver_count(r); i++) {
                j = ldns_get_random() % ldns_resolver_nameserver_count(r);
-               tmp = ns[i];
+               tmpns = ns[i];
                ns[i] = ns[j];
-               ns[j] = tmp;
+               ns[j] = tmpns;
+               tmprtt = rtt[i];
+               rtt[i] = rtt[j];
+               rtt[j] = tmprtt;
        }
        ldns_resolver_set_nameservers(r, ns);
 }