+
+void adns_forallqueries_begin(adns_state ads) {
+ ads->forallnext=
+ ads->timew.head ? ads->timew.head :
+ ads->childw.head ? ads->childw.head :
+ ads->output.head;
+}
+
+adns_query adns_forallqueries_next(adns_state ads, void **context_r) {
+ adns_query qu, nqu;
+
+ nqu= ads->forallnext;
+ 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->parent) break;
+ }
+ ads->forallnext= nqu;
+ if (context_r) *context_r= qu->ctx.ext;
+ return qu;
+}