chiark / gitweb /
Do not get EBADF.
[adns.git] / src / event.c
index 6ddf492a06e5205a3bb8b48140161ea5c8ce2e38..645e5b2a27c8df581bebced00299599a8a85418a 100644 (file)
@@ -47,6 +47,7 @@ void adns__tcp_closenext(adns_state ads) {
   
   serv= ads->tcpserver;
   close(ads->tcpsocket);
+  ads->tcpsocket= -1;
   ads->tcpstate= server_disconnected;
   ads->tcprecv.used= ads->tcprecv_skip= ads->tcpsend.used= 0;
   ads->tcpserver= (serv+1)%ads->nservers;
@@ -526,7 +527,7 @@ void adns_globalsystemfailure(adns_state ads) {
 }
 
 int adns_processany(adns_state ads) {
-  int r;
+  int r, i;
   struct timeval now;
   struct pollfd pollfds[MAX_POLLFDS];
   int npollfds;
@@ -541,6 +542,7 @@ int adns_processany(adns_state ads) {
    * likely just to want to do a read on one or two fds anyway.
    */
   npollfds= adns__pollfds(ads,pollfds);
+  for (i=0; i<npollfds; i++) pollfds[i].revents= pollfds[i].events;
   adns__fdevents(ads,
                 pollfds,npollfds,
                 0,0,0,0,