qu->id= id;
qu->query_dglen= qu->vb.used;
memcpy(qu->query_dgram,qu->vb.buf,qu->vb.used);
-
- adns__query_send(qu,now);
+
+ typei->query_send(qu,now);
}
adns_status adns__ckl_hostname(adns_state ads, adns_queryflags flags,
}
adns_status adns__internal_submit(adns_state ads, adns_query *query_r,
+ adns_query parent,
const typeinfo *typei, adns_rrtype type,
vbuf *qumsg_vb, int id,
adns_queryflags flags, struct timeval now,
if (!qu) { err = adns_s_nomemory; goto x_err; }
*query_r= qu;
+ qu->parent= parent;
+ LIST_LINK_TAIL_PART(parent->children,qu,siblings.);
memcpy(&qu->ctx,ctx,sizeof(qu->ctx));
query_submit(ads,qu, typei,qumsg_vb,id,flags,now);
return rp;
}
-static void cancel_children(adns_query qu) {
+void adns__cancel_children(adns_query qu) {
adns_query cqu, ncqu;
for (cqu= qu->children.head; cqu; cqu= ncqu) {
void adns__reset_preserved(adns_query qu) {
assert(!qu->final_allocspace);
- cancel_children(qu);
+ adns__cancel_children(qu);
qu->answer->nrrs= 0;
qu->answer->rrs.untyped= 0;
qu->interim_allocd= qu->preserved_allocd;
static void free_query_allocs(adns_query qu) {
allocnode *an, *ann;
- cancel_children(qu);
+ adns__cancel_children(qu);
for (an= qu->allocations.head; an; an= ann) { ann= an->next; free(an); }
LIST_INIT(qu->allocations);
adns__vbuf_free(&qu->vb);
adns_answer *ans;
adns_query parent;
- cancel_children(qu);
+ adns__cancel_children(qu);
qu->id= -1;
ans= qu->answer;