diff --git a/repos/gems/src/lib/vfs/pipe/plugin.cc b/repos/gems/src/lib/vfs/pipe/plugin.cc index 310198486..ffa0b282a 100644 --- a/repos/gems/src/lib/vfs/pipe/plugin.cc +++ b/repos/gems/src/lib/vfs/pipe/plugin.cc @@ -400,8 +400,13 @@ class Vfs_pipe::File_system : public Vfs::File_system Pipe *pipe = nullptr; if (Pipe_handle *handle = dynamic_cast(vfs_handle)) { pipe = &handle->pipe; - if (handle->writer) + if (handle->writer) { pipe->num_writers--; + + /* trigger reattempt of read to deliver EOF */ + if (pipe->num_writers == 0) + pipe->submit_signal(); + } } else if (New_pipe_handle *handle = dynamic_cast(vfs_handle)) pipe = &handle->pipe;