+ fprintf(stdout,"%s flags %d type %d",
+ domain,qflags,types[ti]&adns_rrt_reprmask);
+ r= adns_submit(ads,domain,types[ti],qflags,mc,&mc->qu);
+ if (r == ENOSYS) {
+ fprintf(stdout," not implemented\n");
+ mc->qu= 0;
+ mc->doneyet= 1;
+ } else if (r) {
+ failure_errno("submit",r);
+ } else {
+ ri= adns_rr_info(types[ti], &rrtn,&fmtn,0, 0,0);
+ putc(' ',stdout);
+ dumptype(ri,rrtn,fmtn);
+ fprintf(stdout," submitted\n");
+ }
+ }
+ }
+
+ for (;;) {
+ for (qi=0; qi<qc; qi++) {
+ for (ti=0; ti<tc; ti++) {
+ mc= &mcs[qi*tc+ti];
+ mc->found= 0;
+ }
+ }
+ for (adns_forallqueries_begin(ads);
+ (qu= adns_forallqueries_next(ads,&mcr));
+ ) {
+ mc= mcr;
+ assert(qu == mc->qu);
+ assert(!mc->doneyet);
+ mc->found= 1;
+ }
+ mcw= 0;
+ for (qi=0; qi<qc; qi++) {
+ for (ti=0; ti<tc; ti++) {
+ mc= &mcs[qi*tc+ti];
+ if (mc->doneyet) continue;
+ assert(mc->found);
+ if (!mcw) mcw= mc;
+ }
+ }
+ if (!mcw) break;
+
+ if (strchr(owninitflags,'s')) {
+ qu= mcw->qu;
+ mc= mcw;
+ } else {
+ qu= 0;
+ mc= 0;
+ }
+
+ if (strchr(owninitflags,'p')) {
+ r= adns_wait_poll(ads,&qu,&ans,&mcr);
+ } else {
+ r= adns_wait(ads,&qu,&ans,&mcr);
+ }
+ if (r) failure_errno("wait/check",r);
+
+ if (mc) assert(mcr==mc);
+ else mc= mcr;
+ assert(qu==mc->qu);
+ assert(!mc->doneyet);
+
+ fdom_split(mc->fdom,&domain,&qflags,ownflags,sizeof(ownflags));
+
+ if (gettimeofday(&now,0)) { perror("gettimeofday"); quitnow(3); }
+