Joshua Kwan provided a patch to pass POLLERR / POLLHUP back to c-ares.

This fixes a loop problem with high CPU usage.
This commit is contained in:
Gunter Knauf 2009-09-11 02:33:04 +00:00
parent 7ff4b4f2b5
commit 4002fbe1f5
2 changed files with 10 additions and 2 deletions

View file

@ -169,10 +169,14 @@ static int ares_waitperform(struct connectdata *conn, int timeout_ms)
else {
/* move through the descriptors and ask for processing on them */
for(i=0; i < num; i++)
/*
* Following the advice from:
* http://lists.danga.com/pipermail/memcached/2003-October/000336.html
*/
ares_process_fd(data->state.areschannel,
pfd[i].revents & (POLLRDNORM|POLLIN)?
pfd[i].revents & (POLLRDNORM|POLLIN|POLLERR|POLLHUP)?
pfd[i].fd:ARES_SOCKET_BAD,
pfd[i].revents & (POLLWRNORM|POLLOUT)?
pfd[i].revents & (POLLWRNORM|POLLOUT|POLLERR)?
pfd[i].fd:ARES_SOCKET_BAD);
}
return nfds;