diff options
Diffstat (limited to 'src/session.c')
-rw-r--r-- | src/session.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/session.c b/src/session.c index 15598425..2c05114f 100644 --- a/src/session.c +++ b/src/session.c @@ -404,9 +404,14 @@ static ssize_t read_from_child (Session *session, void *buf, size_t count) { ssize_t n_read; - n_read = read (session->priv->from_child_output, buf, count); - if (n_read < 0) - l_warning (session, "Error reading from session: %s", strerror (errno)); + while ((n_read = read (session->priv->from_child_output, buf, count)) < 0) + { + if (errno != EINTR) + { + l_warning (session, "Error reading from session: %s", strerror (errno)); + return n_read; + } + } return n_read; } |