summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-12-08 23:32:24 +0200
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-12-08 23:32:24 +0200
commit3b58d1493efd98f11ab578d9b8a7e650d800806e (patch)
treef9d84e79ba4a1aeeea9edefbc9d214b2f95859ba
parent479a079e6d0ec3f25e4ca0b6ae12eb95dbe63950 (diff)
downloadlightdm-git-3b58d1493efd98f11ab578d9b8a7e650d800806e.tar.gz
Use SA_RESTART flag.
-rw-r--r--src/process.c2
-rw-r--r--src/session.c11
2 files changed, 4 insertions, 9 deletions
diff --git a/src/process.c b/src/process.c
index 75357db6..6f07e4e5 100644
--- a/src/process.c
+++ b/src/process.c
@@ -458,7 +458,7 @@ process_class_init (ProcessClass *klass)
g_io_add_watch (g_io_channel_unix_new (signal_pipe[0]), G_IO_IN, handle_signal, NULL);
action.sa_sigaction = signal_cb;
sigemptyset (&action.sa_mask);
- action.sa_flags = SA_SIGINFO;
+ action.sa_flags = SA_SIGINFO | SA_RESTART;
sigaction (SIGTERM, &action, NULL);
sigaction (SIGINT, &action, NULL);
sigaction (SIGHUP, &action, NULL);
diff --git a/src/session.c b/src/session.c
index 2c05114f..15598425 100644
--- a/src/session.c
+++ b/src/session.c
@@ -404,14 +404,9 @@ static ssize_t
read_from_child (Session *session, void *buf, size_t count)
{
ssize_t n_read;
- 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;
- }
- }
+ n_read = read (session->priv->from_child_output, buf, count);
+ if (n_read < 0)
+ l_warning (session, "Error reading from session: %s", strerror (errno));
return n_read;
}