const adns_rr_addr *sp, int slen)
{
size_t drrsz = *dlen*rrsz, srrsz = slen*rrsz;
- byte *p = adns__alloc_interim(qu, drrsz + srrsz);
+ byte *p;
+
+ /* if (!slen) return adns_s_ok; */
+ p = adns__alloc_interim(qu, drrsz + srrsz);
if (!p) R_NOMEM;
if (*dlen) {
memcpy(p, *dp, drrsz);
memcpy(qu->t.addr.rrty, rrty, nrrty*sizeof(*rrty));
qu->t.addr.nrrty = nrrty;
- addr_subqueries(qu, now, parent->query_dgram, parent->query_dglen);
+ addr_subqueries(qu, now, qu->query_dgram, qu->query_dglen);
*query_r = qu;
return adns_s_ok;
}
size_t addrsz = addr_rrsz(parent);
st= cans->status == adns_s_nodata ? adns_s_ok : cans->status;
- rrp->astatus= st;
if (st) goto done;
assert(addrsz == cans->rrsz);
done:
if (st) {
adns__free_interim(parent, rrp->addrs);
- rrp->naddrs= (st>0 && st<=adns_s_max_tempfail) ? -1 : cans->nrrs;
+ rrp->naddrs= (st>0 && st<=adns_s_max_tempfail) ? -1 : 0;
}
+ rrp->astatus= st;
if (parent->children.head) {
LIST_LINK_TAIL(ads->childw,parent);
} else {