Browse Source

properly set the pipe blocking option

pull/1383/head
Anatol Belski 11 years ago
parent
commit
d516a14fb9
  1. 14
      ext/standard/php_fopen_wrapper.c
  2. 2
      ext/standard/proc_open.c

14
ext/standard/php_fopen_wrapper.c

@ -400,17 +400,19 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa
if (stream == NULL) {
close(fd);
}
}
#ifdef PHP_WIN32
{
zval *blocking_pipes = php_stream_context_get_option(context, "pipe", "blocking");
if (blocking_pipes) {
convert_to_long(blocking_pipes);
php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, Z_LVAL_P(blocking_pipes), NULL);
if (stream && context) {
zval *blocking_pipes = php_stream_context_get_option(context, "pipe", "blocking");
if (blocking_pipes) {
convert_to_long(blocking_pipes);
php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, Z_LVAL_P(blocking_pipes), NULL);
}
}
}
#endif
}
return stream;
}
/* }}} */

2
ext/standard/proc_open.c

@ -546,7 +546,6 @@ PHP_FUNCTION(proc_open)
}
#ifdef PHP_WIN32
php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, blocking_pipes, NULL);
descriptors[ndesc].childend = dup_fd_as_handle((int)fd);
if (descriptors[ndesc].childend == NULL) {
php_error_docref(NULL, E_WARNING, "unable to dup File-Handle for descriptor %d", nindex);
@ -941,6 +940,7 @@ PHP_FUNCTION(proc_open)
#ifdef PHP_WIN32
stream = php_stream_fopen_from_fd(_open_osfhandle((zend_intptr_t)descriptors[i].parentend,
descriptors[i].mode_flags), mode_string, NULL);
php_stream_set_option(stream, PHP_STREAM_OPTION_PIPE_BLOCKING, blocking_pipes, NULL);
#else
stream = php_stream_fopen_from_fd(descriptors[i].parentend, mode_string, NULL);
# if defined(F_SETFD) && defined(FD_CLOEXEC)

Loading…
Cancel
Save