From 6b5b42f5836388d467ab0c2adcca58bb2a6fb0f3 Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Sun, 6 Aug 2017 18:53:51 +0200 Subject: filter: don't write more than PIPE_BUF at once This could result in stalling during big writes when we can't read the output of the child in the mean time. --- filter.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'filter.c') diff --git a/filter.c b/filter.c index 111b606..c0b1541 100644 --- a/filter.c +++ b/filter.c @@ -1,9 +1,11 @@ +#include + +#include #include #include #include #include #include -#include #include #include @@ -83,7 +85,8 @@ filter(char *input, size_t inlen, char *cmd, char **outputo, size_t *outleno) } if (fds[1].revents & POLLOUT) { - ssize_t ret = write(fds[1].fd, input, inlen); + ssize_t ret = write(fds[1].fd, input, + inlen > PIPE_BUF ? PIPE_BUF : inlen); if (ret > 0) { input += ret; inlen -= ret; -- cgit 1.4.1