Joshua Kwan provided a patch to pass POLLERR / POLLHUP back to c-ares.
authorGunter Knauf <gk@gknw.de>
Fri, 11 Sep 2009 02:33:04 +0000 (02:33 +0000)
committerGunter Knauf <gk@gknw.de>
Fri, 11 Sep 2009 02:33:04 +0000 (02:33 +0000)
 This fixes a loop problem with high CPU usage.

CHANGES
lib/hostares.c

diff --git a/CHANGES b/CHANGES
index 6ed90c0..3d2979a 100644 (file)
--- 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
index 1412f13..efecd86 100644 (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;