X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/adns/blobdiff_plain/8b3d55e3d8df616f6fa6d9089a9c9e567229e17b..4218fb9a803f42d5cef3772e56f3220ef8df90af:/src/setup.c diff --git a/src/setup.c b/src/setup.c index 99d1f08..9471c4d 100644 --- a/src/setup.c +++ b/src/setup.c @@ -582,14 +582,33 @@ adns_query adns_forallqueries_next(adns_state ads, void **context_r) { for (;;) { qu= nqu; if (!qu) return 0; - nqu= - qu->next ? qu->next : - qu == ads->timew.tail ? (ads->childw.head ? ads->childw.head : ads->output.head) : - qu == ads->childw.tail ? ads->output.head : - 0; + if (qu->next) { + nqu= qu->next; + } else if (qu == ads->timew.tail) { + if (ads->childw.head) { + nqu= ads->childw.head; + } else { + nqu= ads->output.head; + } + } else if (qu == ads->childw.tail) { + nqu= ads->output.head; + } else { + nqu= 0; + } if (!qu->parent) break; } ads->forallnext= nqu; if (context_r) *context_r= qu->ctx.ext; return qu; } + +void adns__checkqueues(adns_state ads) { + int i; + + i= 0; + adns_forallqueries_begin(ads); + while (adns_forallqueries_next(ads,0)) { + i++; + assert(i<1000); + } +}