diff options
author | Gunter Knauf <gk@gknw.de> | 2009-09-11 02:33:04 +0000 |
---|---|---|
committer | Gunter Knauf <gk@gknw.de> | 2009-09-11 02:33:04 +0000 |
commit | 4002fbe1f545d7d6c4ba2cb6c988f73d1b29d931 (patch) | |
tree | 5d926fb5df2713bc10a29b9e636ffe03256a9046 | |
parent | 7ff4b4f2b5871900d27f5640f71c41858727fc77 (diff) |
Joshua Kwan provided a patch to pass POLLERR / POLLHUP back to c-ares.
This fixes a loop problem with high CPU usage.
-rw-r--r-- | CHANGES | 4 | ||||
-rw-r--r-- | lib/hostares.c | 8 |
2 files changed, 10 insertions, 2 deletions
@@ -6,6 +6,10 @@ Changelog +Guenter Knauf (11 Sep 2009) +- Joshua Kwan provided a patch to pass POLLERR / POLLHUP back to c-ares. + This fixes a loop problem with high CPU usage. + Daniel Stenberg (10 Sep 2009) - Claes Jakobsson fixed a problem with cookie expiry dates at exctly the epoch start second "Thu Jan 1 00:00:00 GMT 1970" as the date parser then returns 0 diff --git a/lib/hostares.c b/lib/hostares.c index 1412f13a6..efecd86bd 100644 --- a/lib/hostares.c +++ b/lib/hostares.c @@ -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; |