summaryrefslogtreecommitdiff
path: root/src/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/session.c')
-rw-r--r--src/session.c11
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;
}