diff options
author | Christian Kellner <gicmo@gnome.org> | 2011-05-25 15:11:52 +0200 |
---|---|---|
committer | Christian Kellner <gicmo@gnome.org> | 2011-05-25 15:41:25 +0200 |
commit | 6eed5cc4188a0c95a8c004f3a295b57adf7b56d1 (patch) | |
tree | 0c8eaeba6c7353a7a5803ac239d60d8851a401e0 /client/gvfsdaemondbus.c | |
parent | 37deaf5ed94d35b26c5b12b4af9ef6459717e748 (diff) | |
download | gvfs-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.c | 8 |
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)) { |