X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/adns/blobdiff_plain/125de2a942a5dc42cefb1aa58dc3f3515c24f3d4..2ac463bf7da8bafbcc48cc7e1dcf24770fb42aa1:/src/query.c diff --git a/src/query.c b/src/query.c index a35d8ba..172ff06 100644 --- a/src/query.c +++ b/src/query.c @@ -27,7 +27,6 @@ #include #include #include -#include #include @@ -202,6 +201,8 @@ int adns_submit(adns_state ads, adns_query qu; const char *p; + adns__consistency(ads,0,cc_entex); + typei= adns__findtype(type); if (!typei) return ENOSYS; @@ -237,15 +238,18 @@ int adns_submit(adns_state ads, } query_simple(ads,qu, owner,ol, typei,flags, now); } + adns__consistency(ads,qu,cc_entex); return 0; x_adnsfail: adns__query_fail(qu,stat); + adns__consistency(ads,qu,cc_entex); return 0; x_errno: r= errno; assert(r); + adns__consistency(ads,0,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,qu,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,0,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) {