wez Fri Nov 28 17:48:32 2003 EDT
Modified files: (Branch: PHP_4_3)
/php-src/main streams.c
Log:
Probable fix for #25575; STDIN/STDOUT/STDERR streams not registered
as network sockets when PHP run from x?inetd.
Index: php-src/main/streams.c
diff -u php-src/main/streams.c:1.125.2.84 php-src/main/streams.c:1.125.2.85
--- php-src/main/streams.c:1.125.2.84 Fri Nov 28 17:11:34 2003
+++ php-src/main/streams.c Fri Nov 28 17:48:31 2003
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.125.2.84 2003/11/28 22:11:34 wez Exp $ */
+/* $Id: streams.c,v 1.125.2.85 2003/11/28 22:48:31 wez Exp $ */
#define _GNU_SOURCE
#include "php.h"
@@ -2016,6 +2016,16 @@
{
php_stdio_stream_data *self;
php_stream *stream;
+#if defined(S_ISFIFO) || defined(S_ISSOCK)
+ struct stat sb;
+ int stat_ok;
+
+ stat_ok = fd >= 0 && fstat(fd, &sb) == 0;
+
+ if (stat_ok && S_ISSOCK(sb.st_mode)) {
+ return _php_stream_sock_open_from_socket(fd, persistent_id STREAMS_CC
TSRMLS_CC);
+ }
+#endif
self = pemalloc_rel_orig(sizeof(*self), persistent_id);
memset(self, 0, sizeof(*self));
@@ -2027,9 +2037,8 @@
#ifdef S_ISFIFO
/* detect if this is a pipe */
- if (self->fd >= 0) {
- struct stat sb;
- self->is_pipe = (fstat(self->fd, &sb) == 0 && S_ISFIFO(sb.st_mode)) ?
1 : 0;
+ if (stat_ok) {
+ self->is_pipe = S_ISFIFO(sb.st_mode) ? 1 : 0;
}
#elif defined(PHP_WIN32)
{
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php