patch 7.4.2297
Problem: When starting a job that reads from a buffer and reaching the end,
the job hangs.
Solution: Close the pipe or socket when all lines were read.
diff --git a/src/channel.c b/src/channel.c
index 25406e1..dbed659 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -1424,11 +1424,14 @@
ch_logn(channel, "written %d lines to channel", written);
in_part->ch_buf_top = lnum;
- if (lnum > buf->b_ml.ml_line_count)
+ if (lnum > buf->b_ml.ml_line_count || lnum > in_part->ch_buf_bot)
{
/* Writing is done, no longer need the buffer. */
in_part->ch_bufref.br_buf = NULL;
ch_log(channel, "Finished writing all lines to channel");
+
+ /* Close the pipe/socket, so that the other side gets EOF. */
+ may_close_part(&channel->CH_IN_FD);
}
else
ch_logn(channel, "Still %d more lines to write",