summaryrefslogtreecommitdiff
path: root/liblightdm-gobject
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2016-06-27 16:13:28 +1200
committerRobert Ancell <robert.ancell@canonical.com>2016-06-27 16:13:28 +1200
commit6c7de4a3a5d474ae461d1c8627b579edf71da280 (patch)
tree054702cd748e748cfd1e6880e2e14b4c3f41c64b /liblightdm-gobject
parent5178da9f81e4f4eda4069c802c43d9a5cba7089a (diff)
downloadlightdm-git-6c7de4a3a5d474ae461d1c8627b579edf71da280.tar.gz
Correctly handle G_IO_STATUS_AGAIN
Diffstat (limited to 'liblightdm-gobject')
-rw-r--r--liblightdm-gobject/greeter.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/liblightdm-gobject/greeter.c b/liblightdm-gobject/greeter.c
index 57ac2774..33562bce 100644
--- a/liblightdm-gobject/greeter.c
+++ b/liblightdm-gobject/greeter.c
@@ -465,6 +465,8 @@ send_message (LightDMGreeter *greeter, guint8 *message, gsize message_length, GE
"Failed to write to daemon: %s",
write_error->message);
g_clear_error (&write_error);
+ if (status == G_IO_STATUS_AGAIN)
+ continue;
if (status != G_IO_STATUS_NORMAL)
return FALSE;
data_length -= n_written;
@@ -774,7 +776,12 @@ recv_message (LightDMGreeter *greeter, gboolean block, guint8 **message, gsize *
n_to_read - priv->n_read,
&n_read,
&read_error);
- if (status != G_IO_STATUS_NORMAL)
+ if (status == G_IO_STATUS_AGAIN)
+ {
+ if (block)
+ continue;
+ }
+ else if (status != G_IO_STATUS_NORMAL)
{
g_set_error (error, LIGHTDM_GREETER_ERROR, LIGHTDM_GREETER_ERROR_COMMUNICATION_ERROR,
"Failed to read from daemon: %s",