Does this fix have possibly anything to do with bug #26863 ?? And how about doing a nice little MFH? --Jani
On Wed, 4 Feb 2004, Wez Furlong wrote: >wez Wed Feb 4 17:46:45 2004 EDT > > Modified files: > /php-src/main/streams streams.c transports.c xp_socket.c > Log: > Fix a bug in the persistent socket liveness checks and feof(); they were > using the default socket timeout of 60 seconds before returning the socket > to the calling script. The reason they were using that value is that the > same code is used for feof(), so the fix is allowing the caller to > indicate the timeout value for liveness checks. > > A possible remaining issue now is that 0 second timeout[1] for pfsockopen > is possibly too short; it's impossible to specify a sane value for all > possible uses, so maybe we need a stream context or an .ini option to > control this, or maybe use the timeout value that was passed to > pfsockopen(). > > # [1] by timeout, I mean the time that PHP will wait for data on a > # persistent socket before deciding if a new connection should be made; > # NOT the timeout while waiting for a new connection to be established. > > >http://cvs.php.net/diff.php/php-src/main/streams/streams.c?r1=1.48&r2=1.49&ty=u >Index: php-src/main/streams/streams.c >diff -u php-src/main/streams/streams.c:1.48 php-src/main/streams/streams.c:1.49 >--- php-src/main/streams/streams.c:1.48 Wed Jan 28 17:21:54 2004 >+++ php-src/main/streams/streams.c Wed Feb 4 17:46:44 2004 >@@ -19,7 +19,7 @@ > +----------------------------------------------------------------------+ > */ > >-/* $Id: streams.c,v 1.48 2004/01/28 22:21:54 pollita Exp $ */ >+/* $Id: streams.c,v 1.49 2004/02/04 22:46:44 wez Exp $ */ > > #define _GNU_SOURCE > #include "php.h" >@@ -602,9 +602,10 @@ > return 0; > } > >+ /* 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; > } > >http://cvs.php.net/diff.php/php-src/main/streams/transports.c?r1=1.11&r2=1.12&ty=u >Index: php-src/main/streams/transports.c >diff -u php-src/main/streams/transports.c:1.11 php-src/main/streams/transports.c:1.12 >--- php-src/main/streams/transports.c:1.11 Tue Jan 27 17:40:44 2004 >+++ php-src/main/streams/transports.c Wed Feb 4 17:46:44 2004 >@@ -16,7 +16,7 @@ > +----------------------------------------------------------------------+ > */ > >-/* $Id: transports.c,v 1.11 2004/01/27 22:40:44 wez Exp $ */ >+/* $Id: transports.c,v 1.12 2004/02/04 22:46:44 wez Exp $ */ > > #include "php.h" > #include "php_streams_int.h" >@@ -74,6 +74,8 @@ > if (persistent_id) { > switch(php_stream_from_persistent_id(persistent_id, &stream > TSRMLS_CC)) { > case PHP_STREAM_PERSISTENT_SUCCESS: >+ /* use a 0 second timeout when checking if the socket >+ * has already died */ > if (PHP_STREAM_OPTION_RETURN_OK == > php_stream_set_option(stream, PHP_STREAM_OPTION_CHECK_LIVENESS, 0, NULL)) { > return stream; > } >http://cvs.php.net/diff.php/php-src/main/streams/xp_socket.c?r1=1.21&r2=1.22&ty=u >Index: php-src/main/streams/xp_socket.c >diff -u php-src/main/streams/xp_socket.c:1.21 php-src/main/streams/xp_socket.c:1.22 >--- php-src/main/streams/xp_socket.c:1.21 Thu Jan 8 03:17:59 2004 >+++ php-src/main/streams/xp_socket.c Wed Feb 4 17:46:44 2004 >@@ -16,7 +16,7 @@ > +----------------------------------------------------------------------+ > */ > >-/* $Id: xp_socket.c,v 1.21 2004/01/08 08:17:59 andi Exp $ */ >+/* $Id: xp_socket.c,v 1.22 2004/02/04 22:46:44 wez Exp $ */ > > #include "php.h" > #include "ext/standard/file.h" >@@ -230,10 +230,14 @@ > char buf; > int alive = 1; > >- if (sock->timeout.tv_sec == -1) { >- tv.tv_sec = FG(default_socket_timeout); >+ if (value == -1) { >+ if (sock->timeout.tv_sec == -1) { >+ tv.tv_sec = FG(default_socket_timeout); >+ } else { >+ tv = sock->timeout; >+ } > } else { >- tv = sock->timeout; >+ tv.tv_sec = value; > } > > if (sock->socket == -1) { > > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php