typedef enum {
adns_qf_search= 0x000001, /* use the searchlist */
adns_qf_usevc= 0x000002, /* use a virtual circuit (TCP connection) */
+ adns_qf_owner= 0x000004, /* fill in the owner field in the answer fixme:do */
adns_qf_quoteok_query= 0x000010, /* allow quote-requiring chars in query domain */
adns_qf_quoteok_cname= 0x000020, /* allow ... in CNAME we go via */
adns_qf_quoteok_anshost= 0x000040, /* allow ... in answers expected to be hostnames */
typedef struct {
adns_status status;
char *cname; /* always NULL if query was for CNAME records */
+ char *owner; /* often NULL, depending on query flags */
adns_rrtype type; /* guaranteed to be same as in query */
time_t expires; /* expiry time, defined only if _s_ok, nxdomain or nodata. NOT TTL! */
int nrrs, rrsz;
}
}
+ 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;
- } else {
- qu->search_vb.used= qu->search_origlen;
}
}
qu->ctx.callback= 0;
memset(&qu->ctx.info,0,sizeof(qu->ctx.info));
+ *query_r= qu;
+
ol= strlen(owner);
if (!ol) { stat= adns_s_querydomaininvalid; goto x_adnsfail; }
if (ol>DNS_MAXDOMAIN+1) { stat= adns_s_querydomaintoolong; goto x_adnsfail; }
for (ndots=0, p=owner; (p= strchr(p,'.')); p++, ndots++);
qu->search_doneabs= (ndots >= ads->searchndots) ? -1 : 0;
-
qu->search_origlen= ol;
-
adns__search_next(ads,qu,now);
- return 0;
+ } else {
+ query_simple(ads,qu, owner,ol, typei,flags, now);
}
-
- query_simple(ads,qu, owner,ol, typei,flags, now);
return 0;
x_adnsfail: