+adns (1.1); urgency=medium
+
+ Bugfixes:
+ * Stop searching on a CNAME (even if it's broken).
+ * When search list runs out, _qf_owner sets owner to query domain.
+
+ --
+
adns (1.0); urgency=medium
Bugfixes:
} else {
if (qu->search_pos >= ads->nsearchlist) {
if (qu->search_doneabs) {
+ qu->search_vb.used= qu->search_origlen;
stat= adns_s_nxdomain; goto x_fail;
- return;
} else {
nextentry= 0;
qu->search_doneabs= 1;
qu->search_vb.used= qu->search_origlen;
if (nextentry) {
if (!adns__vbuf_append(&qu->search_vb,".",1) ||
- !adns__vbuf_appendstr(&qu->search_vb,nextentry)) {
- stat= adns_s_nomemory; goto x_fail;
- }
+ !adns__vbuf_appendstr(&qu->search_vb,nextentry))
+ goto x_nomemory;
}
free(qu->query_dgram);
query_simple(ads,qu, qu->search_vb.buf, qu->search_vb.used, qu->typei, qu->flags, now);
return;
-
+
+x_nomemory:
+ stat= adns_s_nomemory;
x_fail:
adns__query_fail(qu,stat);
}
/* Returns 1 if OK, otherwise there was no memory. */
adns_answer *ans;
+ if (!(qu->flags & adns_qf_owner)) return 1;
+
ans= qu->answer;
assert(!ans->owner);
qu->id= -1;
ans= qu->answer;
- if (qu->flags & adns_qf_owner && qu->flags & adns_qf_search &&
- ans->status != adns_s_nomemory) {
+ if (qu->flags & adns_qf_search && ans->status != adns_s_nomemory) {
if (!save_owner(qu, qu->search_vb.buf, qu->search_vb.used)) {
adns__query_fail(qu,adns_s_nomemory);
return;
qu->cname_begin= rdstart;
qu->cname_dglen= dglen;
st= adns__parse_domain(ads,serv,qu, &qu->vb,
- qu->flags & adns_qf_quotefail_cname ? 0 : pdf_quoteok,
+ qu->flags & adns_qf_quotefail_cname
+ ? 0 : pdf_quoteok,
dgram,dglen, &rdstart,rdstart+rdlength);
if (!qu->vb.used) goto x_truncated;
if (st) { adns__query_fail(qu,st); return; }
/* We still wanted to look for the SOA so we could find the TTL. */
adns__update_expires(qu,soattl,now);
- if (qu->flags & adns_qf_search) {
+ if (qu->flags & adns_qf_search && !qu->cname_dgram) {
adns__search_next(ads,qu,now);
} else {
adns__query_fail(qu,adns_s_nxdomain);