From 9b0d76d585b91ca9385ec7f8b04ddaecf000febe Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Tue, 4 Nov 2008 21:05:31 +0000 Subject: Open STDIN and php://stdin streams with the relevant wrapper when the file descriptor is a socket (inetd, etc) Fixes bug #43731 --- ext/standard/php_fopen_wrapper.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'ext/standard/php_fopen_wrapper.c') diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c index 7ed59cbe28..3d380344a9 100644 --- a/ext/standard/php_fopen_wrapper.c +++ b/ext/standard/php_fopen_wrapper.c @@ -291,9 +291,23 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch return NULL; } +#if defined(S_IFSOCK) && !defined(WIN32) && !defined(__BEOS__) + do { + struct stat st; + memset(&st, 0, sizeof(st)); + if (fstat(fd, &st) == 0 && (st.st_mode & S_IFMT) == S_IFSOCK) { + stream = php_stream_sock_open_from_socket(fd, NULL); + if (stream) { + stream->ops = &php_stream_socket_ops; + return stream; + } + } + } while (0); +#endif + if (file) { stream = php_stream_fopen_from_file(file, mode); - } else { + } else { stream = php_stream_fopen_from_fd(fd, mode, NULL); if (stream == NULL) { close(fd); -- cgit v1.2.1