diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2009-02-23 15:58:19 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2009-02-23 15:58:19 +0000 |
commit | e85ec7c86465f2e7a3ba81c1c0834a8dda85f4a8 (patch) | |
tree | 44b5c99965c6b3d844065db59c02dc96d3cc3719 | |
parent | 551a2d52e2eda3c0e2ccea3c1b282c7338c50d33 (diff) | |
download | php-git-e85ec7c86465f2e7a3ba81c1c0834a8dda85f4a8.tar.gz |
Fixed bug #47477 (php_curl_stream_read() unnecessarily sleeps 15 secs under
heavy load)
# Patch by giuseppe bonacci
-rw-r--r-- | ext/curl/streams.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/ext/curl/streams.c b/ext/curl/streams.c index 1bb427cc9e..4e1c0dccba 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); } |