X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/24d52b13cf32881fb2e8120add85ecdb06d3584d..1389dc72fe158c45875e5a372b389d500ba89462:/src/query.c?ds=sidebyside diff --git a/src/query.c b/src/query.c index 3fab80c..d1d0b31 100644 --- a/src/query.c +++ b/src/query.c @@ -27,7 +27,6 @@ #include #include #include -#include #include @@ -202,8 +201,10 @@ int adns_submit(adns_state ads, adns_query qu; const char *p; + adns__consistency(ads,cc_entex); + typei= adns__findtype(type); - if (!typei) return adns_s_unknownrrtype; + if (!typei) return ENOSYS; r= gettimeofday(&now,0); if (r) goto x_errno; qu= query_alloc(ads,typei,flags,now); if (!qu) goto x_errno; @@ -237,15 +238,18 @@ int adns_submit(adns_state ads, } query_simple(ads,qu, owner,ol, typei,flags, now); } + adns__consistency(ads,cc_entex); return 0; x_adnsfail: adns__query_fail(qu,stat); + adns__consistency(ads,cc_entex); return 0; x_errno: r= errno; assert(r); + adns__consistency(ads,cc_entex); return r; } @@ -362,15 +366,19 @@ static void free_query_allocs(adns_query qu) { } void adns_cancel(adns_query qu) { + adns_state ads; + + ads= qu->ads; + adns__consistency(ads,cc_entex); switch (qu->state) { case query_tosend: case query_tcpwait: case query_tcpsent: - LIST_UNLINK(qu->ads->timew,qu); + LIST_UNLINK(ads->timew,qu); break; case query_child: - LIST_UNLINK(qu->ads->childw,qu); + LIST_UNLINK(ads->childw,qu); break; case query_done: - LIST_UNLINK(qu->ads->output,qu); + LIST_UNLINK(ads->output,qu); break; default: abort(); @@ -378,6 +386,7 @@ void adns_cancel(adns_query qu) { free_query_allocs(qu); free(qu->answer); free(qu); + adns__consistency(ads,cc_entex); } void adns__update_expires(adns_query qu, unsigned long ttl, struct timeval now) { @@ -465,6 +474,7 @@ void adns__query_done(adns_query qu) { makefinal_query(qu); LIST_LINK_TAIL(qu->ads->output,qu); } + qu->state= query_done; } void adns__query_fail(adns_query qu, adns_status stat) {