summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Stoeckl <code@mstoeckl.com>2023-04-02 19:52:17 -0400
committerManuel Stoeckl <code@mstoeckl.com>2023-04-02 19:52:17 -0400
commitfca09a120df3d5b6cbe8f0e3e188c8a0ad9277cf (patch)
treec7c580b931c1ded1ee52e48fc10af7f4f94be93b
parentaba20719cc4661b59e86020a1ec8a6ee37a35c24 (diff)
Handle pipe poll errors by closing pipe
-rw-r--r--src/shadow.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/shadow.c b/src/shadow.c
index df60c4a..a1e67f9 100644
--- a/src/shadow.c
+++ b/src/shadow.c
@@ -2311,6 +2311,16 @@ void mark_pipe_object_statuses(
if (pfds[i].revents & POLLOUT) {
sfd->pipe.writable = true;
}
+ if (pfds[i].revents & POLLERR) {
+ wp_debug("Pipe poll returned POLLERR for .pipe_fd=%d, closing",
+ lfd);
+ if (sfd->pipe.can_read) {
+ pipe_close_read(sfd);
+ }
+ if (sfd->pipe.can_write) {
+ pipe_close_write(sfd);
+ }
+ }
}
}