summaryrefslogtreecommitdiff
path: root/client/gvfsdaemondbus.c
diff options
context:
space:
mode:
authorChristian Kellner <gicmo@gnome.org>2011-05-25 15:11:52 +0200
committerChristian Kellner <gicmo@gnome.org>2011-05-25 15:41:25 +0200
commit6eed5cc4188a0c95a8c004f3a295b57adf7b56d1 (patch)
tree0c8eaeba6c7353a7a5803ac239d60d8851a401e0 /client/gvfsdaemondbus.c
parent37deaf5ed94d35b26c5b12b4af9ef6459717e748 (diff)
downloadgvfs-6eed5cc4188a0c95a8c004f3a295b57adf7b56d1.tar.gz
client: Handle error events when polling _g_vfs_daemon_call_sync ()
Check for G_IO_NVAL, G_IO_ERR and G_IO_HUP when we (succesfully) returned from g_poll since we get into a infinite loop later otherwise.
Diffstat (limited to 'client/gvfsdaemondbus.c')
-rw-r--r--client/gvfsdaemondbus.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/client/gvfsdaemondbus.c b/client/gvfsdaemondbus.c
index 81fbfe0a..a7a56dfc 100644
--- a/client/gvfsdaemondbus.c
+++ b/client/gvfsdaemondbus.c
@@ -770,6 +770,14 @@ _g_vfs_daemon_call_sync (DBusMessage *message,
"poll error");
goto out;
}
+
+ if (poll_fds[0].revents & (G_IO_NVAL | G_IO_ERR | G_IO_HUP))
+ {
+ dbus_pending_call_unref (pending);
+ g_cancellable_release_fd (cancellable);
+ invalidate_local_connection (dbus_id, error);
+ goto out;
+ }
if (!sent_cancel && g_cancellable_is_cancelled (cancellable))
{