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;
}
int adns_processany(adns_state ads) {
- int r;
+ int r, i;
struct timeval now;
struct pollfd pollfds[MAX_POLLFDS];
int npollfds;
* 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,
qu= *query_io;
if (!qu) {
- if (!ads->output.head) return EWOULDBLOCK;
+ if (!ads->output.head) return EAGAIN;
qu= ads->output.head;
} else {
- if (qu->id>=0) return EWOULDBLOCK;
+ if (qu->id>=0) return EAGAIN;
}
LIST_UNLINK(ads->output,qu);
*answer= qu->answer;
adns__consistency(ads,*query_io,cc_entex);
for (;;) {
r= adns__internal_check(ads,query_io,answer_r,context_r);
- if (r != EWOULDBLOCK) break;
+ if (r != EAGAIN) break;
maxfd= 0; tvp= 0;
FD_ZERO(&readfds); FD_ZERO(&writefds); FD_ZERO(&exceptfds);
adns_beforeselect(ads,&maxfd,&readfds,&writefds,&exceptfds,&tvp,&tvbuf,0);