summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorDavid Soria Parra <dsp@php.net>2008-08-27 07:48:37 +0000
committerDavid Soria Parra <dsp@php.net>2008-08-27 07:48:37 +0000
commit8555d34ba51ecc02add759d4103818b9b152328e (patch)
tree97543ef567275e688650122e713c10f3f35a4be4 /main
parent77e07a631a7d74ce15325c2ca7f23526f59fd5a0 (diff)
downloadphp-git-8555d34ba51ecc02add759d4103818b9b152328e.tar.gz
MFH: Fixed bug #43782 (feof() does not detect timeout on socket)
Diffstat (limited to 'main')
-rwxr-xr-xmain/streams/streams.c2
-rw-r--r--main/streams/xp_socket.c8
2 files changed, 7 insertions, 3 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c
index 7349bb1480..c18c17e736 100755
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -633,7 +633,7 @@ PHPAPI int _php_stream_eof(php_stream *stream TSRMLS_DC)
/* use the configured timeout when checking eof */
if (!stream->eof && PHP_STREAM_OPTION_RETURN_ERR ==
php_stream_set_option(stream, PHP_STREAM_OPTION_CHECK_LIVENESS,
- 0, NULL)) {
+ -1, NULL)) {
stream->eof = 1;
}
diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c
index 5e074a0ca0..e181feb94b 100644
--- a/main/streams/xp_socket.c
+++ b/main/streams/xp_socket.c
@@ -280,8 +280,12 @@ static int php_sockop_set_option(php_stream *stream, int option, int value, void
if (sock->socket == -1) {
alive = 0;
- } else if (php_pollfd_for(sock->socket, PHP_POLLREADABLE|POLLPRI, &tv) > 0) {
- if (0 == recv(sock->socket, &buf, sizeof(buf), MSG_PEEK) && php_socket_errno() != EAGAIN) {
+ } else {
+ if (php_pollfd_for(sock->socket, PHP_POLLREADABLE|POLLPRI, &tv) > 0) {
+ if (0 == recv(sock->socket, &buf, sizeof(buf), MSG_PEEK) && php_socket_errno() != EAGAIN) {
+ alive = 0;
+ }
+ } else {
alive = 0;
}
}