aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2009-09-15 00:07:25 +0000
committerYang Tse <yangsita@gmail.com>2009-09-15 00:07:25 +0000
commit7e0b0763fc609f99ec8938382a8ffada9493d7ab (patch)
tree7489e343ec8ec6d8e6aa88a7789e44ca08e44bea
parentc67c4e7095183a76d218f3e83b1a8392cc2bc676 (diff)
Revert Joshua Kwan's patch committed 11 Sep 2009.
Some systems poll function sets POLLHUP in revents without setting POLLIN, and sets POLLERR without setting POLLIN and POLLOUT. In some libcurl code execution paths this could trigger busy wait loops with high CPU usage until a timeout condition aborted the loop. The reverted patch addressed the above issue for a very specific case, when awaiting c-ares to resolve. A libcurl-wide fix superceeds this one. http://cool.haxx.se/cvs.cgi/curl/lib/select.c.diff?r1=1.52&r2=1.53
-rw-r--r--lib/hostares.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/lib/hostares.c b/lib/hostares.c
index efecd86bd..1412f13a6 100644
--- a/lib/hostares.c
+++ b/lib/hostares.c
@@ -169,14 +169,10 @@ 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|POLLERR|POLLHUP)?
+ pfd[i].revents & (POLLRDNORM|POLLIN)?
pfd[i].fd:ARES_SOCKET_BAD,
- pfd[i].revents & (POLLWRNORM|POLLOUT|POLLERR)?
+ pfd[i].revents & (POLLWRNORM|POLLOUT)?
pfd[i].fd:ARES_SOCKET_BAD);
}
return nfds;