You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am not sure if this is actually an issue, but if you pipe from a stream that has already reached EOF (or closed some other way) pipe will cause the loop to never exit because no events are sent - or will ever be sent - to the destination stream.
It seems that it would be better for pipe to close the destination stream if isReadable is false.
Reproduce:
<?phprequire_once__DIR__ . '/vendor/autoload.php';
system('echo Testing > somefile.txt');
$loop = \React\EventLoop\Factory::create();
$readStream = new \React\Stream\Stream(fopen("somefile.txt", "r"), $loop);
$loop->addTimer(1, function () use ($loop, $readStream) {
$output = new \React\Stream\Stream(STDOUT, $loop);
$readStream->pipe($output);
});
$loop->run();
The text was updated successfully, but these errors were encountered:
It seems that it would be better for pipe to close the destination stream if isReadable is false.
Thanks for spotting 👍 I think the suggested change makes perfect the sense and I would consider the current behavior a bug.
The default behavior of pipe() is to end() the destination stream once the source stream also ends (though this can be controlled by the user). In this case it also makes sense to close the destination stream immediately if the the source stream is already closed at the beginning.
Note that the problem you're observing is also conflated with #37 because your $output stream is actually assumed to be a duplex stream by default. If you call $output->pause(), then the output stream will still not end (arguably incorrect), but the loop should exit (correct).
I am not sure if this is actually an issue, but if you pipe from a stream that has already reached EOF (or closed some other way) pipe will cause the loop to never exit because no events are sent - or will ever be sent - to the destination stream.
It seems that it would be better for pipe to close the destination stream if
isReadable
is false.Reproduce:
The text was updated successfully, but these errors were encountered: