chiark / gitweb /
+ * TCP handling revamped (avoids recursive-invocation problems).
[adns.git] / client / adnstest.c
index c4dd6b120709b28fa3bc15f0a57aea722f2673cc..4abd4ffae8a53cd80f9c8dbe7b2d43722d461781 100644 (file)
@@ -3,7 +3,12 @@
  * - simple test program, not part of the library
  */
 /*
- *  This file is part of adns, which is Copyright (C) 1997-1999 Ian Jackson
+ *  This file is
+ *    Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
+ *
+ *  It is part of adns, which is
+ *    Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
+ *    Copyright (C) 1999 Tony Finch <dot@dotat.at>
  *  
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -143,8 +148,7 @@ int main(int argc, char *const *argv) {
   const char *initstring, *rrtn, *fmtn;
   const char *const *fdomlist, *domain;
   char *show, *cp;
-  int len, i, qc, qi, tc, ti, ch, qflags, initflagsnum, npollfds, npollfdsavail, timeout;
-  struct pollfd *pollfds;
+  int len, i, qc, qi, tc, ti, ch, qflags, initflagsnum;
   adns_status ri;
   int r;
   const adns_rrtype *types;
@@ -216,9 +220,6 @@ int main(int argc, char *const *argv) {
   }
   if (r) failure_errno("init",r);
 
-  npollfdsavail= 0;
-  pollfds= 0;
-  
   for (qi=0; qi<qc; qi++) {
     fdom_split(fdomlist[qi],&domain,&qflags,ownflags,sizeof(ownflags));
     if (!consistsof(ownflags,"a")) usageerr("unknown ownqueryflag");
@@ -279,23 +280,7 @@ int main(int argc, char *const *argv) {
     }
 
     if (strchr(owninitflags,'p')) {
-      for (;;) {
-       r= adns_check(ads,&qu,&ans,&mcr);
-       if (r != EWOULDBLOCK) break;
-       for (;;) {
-         npollfds= npollfdsavail;
-         timeout= -1;
-         r= adns_beforepoll(ads, pollfds, &npollfds, &timeout, 0);
-         if (r != ERANGE) break;
-         pollfds= realloc(pollfds,sizeof(*pollfds)*npollfds);
-         if (!pollfds) failure_errno("realloc pollfds",errno);
-         npollfdsavail= npollfds;
-       }
-       if (r) failure_errno("beforepoll",r);
-       r= poll(pollfds,npollfds,timeout);
-       if (r == -1) failure_errno("poll",errno);
-       adns_afterpoll(ads,pollfds, r?npollfds:0, 0);
-      }
+      r= adns_wait_poll(ads,&qu,&ans,&mcr);
     } else {
       r= adns_wait(ads,&qu,&ans,&mcr);
     }