]> granicus.if.org Git - curl/commitdiff
Revert Joshua Kwan's patch committed 11 Sep 2009.
authorYang Tse <yangsita@gmail.com>
Tue, 15 Sep 2009 00:07:25 +0000 (00:07 +0000)
committerYang Tse <yangsita@gmail.com>
Tue, 15 Sep 2009 00:07:25 +0000 (00:07 +0000)
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

lib/hostares.c

index efecd86bd87966f79aa608b793e3cb0b9cb60d22..1412f13a6a80415c1e072438a5eb2864ecf96047 100644 (file)
@@ -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;