From 4002fbe1f545d7d6c4ba2cb6c988f73d1b29d931 Mon Sep 17 00:00:00 2001 From: Gunter Knauf Date: Fri, 11 Sep 2009 02:33:04 +0000 Subject: [PATCH] Joshua Kwan provided a patch to pass POLLERR / POLLHUP back to c-ares. This fixes a loop problem with high CPU usage. --- CHANGES | 4 ++++ lib/hostares.c | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 6ed90c02c..3d2979a51 100644 --- a/CHANGES +++ b/CHANGES @@ -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;