From 88fcc8fc81a015c6140da1754e5b2954dfe779dd Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Thu, 31 Oct 2019 15:29:12 -0400 Subject: [PATCH] fixed bug in handling POLLHUP for stdin --- src/lib/job.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/job.c b/src/lib/job.c index 1ec1f64..2c0bbbf 100644 --- a/src/lib/job.c +++ b/src/lib/job.c @@ -27,6 +27,7 @@ static void pipe_read(Job* job) char buffer[32769]; errno = 0; long nread = read(job->fd, buffer, sizeof(buffer)-1); + telem_send("PIPE_READ(fd : %d, ret: %ld)\n", job->fd, nread); if (nread <= 0) { job->readfn = NULL; @@ -94,7 +95,7 @@ static void job_process(int fd, int events) job = job->next; if (!job || !events) return; telem_send("JOB(fd: %d, events: 0x%x)\n", fd, events); - if (job->readfn && (events & POLLIN)) + if (job->readfn && (events & (POLLIN|POLLHUP))) { telem_send("JOB_READ(fd: %d)\n", job->fd); job->readfn(job); @@ -104,7 +105,7 @@ static void job_process(int fd, int events) telem_send("JOB_WRITE(fd: %d)\n", job->fd); job->writefn(job); } - if ((events & (POLLHUP|POLLERR) && !job->readfn) || (!job->readfn && !job->writefn)) + if ((events & POLLERR) || (!job->readfn && !job->writefn)) { telem_send("JOB_FINISH(fd: %d)\n", job->fd); job_finish(job); -- 2.52.0