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.
{
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:
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);
}