summaryrefslogtreecommitdiff
path: root/ext/standard/php_fopen_wrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/php_fopen_wrapper.c')
-rw-r--r--ext/standard/php_fopen_wrapper.c16
1 files changed, 15 insertions, 1 deletions
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);