jani                                     Sat, 25 Jul 2009 13:09:03 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=284748

Log:
- Merge from PHP_5_3:
r280810 | kalle: Fixed compiler warnings
r276286 | iliaa: Fixed bug #47477 (php_curl_stream_read() unnecessarily sleeps 
15 secs under heavy load)

Bug: http://bugs.php.net/47477 (Closed) [PATCH] php_curl_stream_read() 
unnecessarily sleeps 15 secs under heavy load
      
Changed paths:
    U   php/php-src/branches/PHP_5_2/ext/curl/streams.c

Modified: php/php-src/branches/PHP_5_2/ext/curl/streams.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/curl/streams.c     2009-07-25 13:00:25 UTC 
(rev 284747)
+++ php/php-src/branches/PHP_5_2/ext/curl/streams.c     2009-07-25 13:09:03 UTC 
(rev 284748)
@@ -129,7 +129,7 @@

        /* our notification system only works in a single direction; we should 
detect which
         * direction is important and use the correct values in this call */
-       php_stream_notify_progress(stream->context, dlnow, dltotal);
+       php_stream_notify_progress(stream->context, (size_t) dlnow, (size_t) 
dltotal);
        return 0;
 }

@@ -167,7 +167,8 @@
                        tv.tv_sec = 15; /* TODO: allow this to be configured 
from the script */

                        /* wait for data */
-                       switch (select(curlstream->maxfd + 1, 
&curlstream->readfds, &curlstream->writefds, &curlstream->excfds, &tv)) {
+                       switch ((curlstream->maxfd < 0) ? 1 :
+                                       select(curlstream->maxfd + 1, 
&curlstream->readfds, &curlstream->writefds, &curlstream->excfds, &tv)) {
                                case -1:
                                        /* error */
                                        return 0;
@@ -180,7 +181,8 @@
                                                curlstream->mcode = 
curl_multi_perform(curlstream->multi, &curlstream->pending);
                                        } while (curlstream->mcode == 
CURLM_CALL_MULTI_PERFORM);
                        }
-               } while (curlstream->readbuffer.readpos >= 
curlstream->readbuffer.writepos && curlstream->pending > 0);
+               } while (curlstream->maxfd >= 0 &&
+                               curlstream->readbuffer.readpos >= 
curlstream->readbuffer.writepos && curlstream->pending > 0);

        }


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to