From: Ilia Alshanetsky Date: Mon, 23 Feb 2009 15:58:41 +0000 (+0000) Subject: MFB: Fixed bug #47477 (php_curl_stream_read() unnecessarily sleeps 15 secs X-Git-Tag: php-5.4.0alpha1~191^2~4223 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2416c9350575769be89893a2085007e8559124e0;p=php MFB: Fixed bug #47477 (php_curl_stream_read() unnecessarily sleeps 15 secs under heavy load) --- diff --git a/ext/curl/streams.c b/ext/curl/streams.c index ca2b08ae1d..bc713b9239 100644 --- a/ext/curl/streams.c +++ b/ext/curl/streams.c @@ -169,7 +169,8 @@ static size_t php_curl_stream_read(php_stream *stream, char *buf, size_t count T 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; @@ -182,7 +183,8 @@ static size_t php_curl_stream_read(php_stream *stream, char *buf, size_t count T 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); }