From 89de347f92acf333ae57ee61ef33b4b0d5604514 Mon Sep 17 00:00:00 2001 From: Jani Taskinen Date: Sat, 25 Jul 2009 13:09:03 +0000 Subject: [PATCH] - 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) --- ext/curl/streams.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ext/curl/streams.c b/ext/curl/streams.c index 22ea72b0f3..0e1a55a7ea 100644 --- a/ext/curl/streams.c +++ b/ext/curl/streams.c @@ -129,7 +129,7 @@ static int on_progress_avail(php_stream *stream, double dltotal, double dlnow, d /* 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 @@ 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; @@ -180,7 +181,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); } -- 2.40.0