diff options
author | Luiz Augusto von Dentz <luiz.dentz-von@nokia.com> | 2010-10-13 15:06:46 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-10-13 15:55:26 +0300 |
commit | c896d117243b0f72f229c133df77febc9508fb14 (patch) | |
tree | 07b9bd7baeb50fea17f6169f54c97743bfdb56c2 /gdbus/mainloop.c | |
parent | 5085e299fde0e064849852b9ad34ed7d456a6096 (diff) | |
download | ofono-c896d117243b0f72f229c133df77febc9508fb14.tar.bz2 |
gdbus: fix not handling bus disconnects
We where not dispatching data when a bus disconnects which cause
Disconnected signal to not be processed and thus causing the process to
either not exit or to not trigger callbacks registered with
g_dbus_set_disconnect_function.
To fix this now we always schedule a dispatch which will make sure data
still not processed will make its way to the proper handlers even if
disconnected.
Diffstat (limited to 'gdbus/mainloop.c')
-rw-r--r-- | gdbus/mainloop.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gdbus/mainloop.c b/gdbus/mainloop.c index ec10ab06..862c434a 100644 --- a/gdbus/mainloop.c +++ b/gdbus/mainloop.c @@ -95,6 +95,7 @@ static gboolean watch_func(GIOChannel *chan, GIOCondition cond, gpointer data) { struct watch_info *info = data; unsigned int flags = 0; + DBusDispatchStatus status; dbus_connection_ref(info->conn); @@ -105,6 +106,9 @@ static gboolean watch_func(GIOChannel *chan, GIOCondition cond, gpointer data) dbus_watch_handle(info->watch, flags); + status = dbus_connection_get_dispatch_status(info->conn); + queue_dispatch(info->conn, status); + dbus_connection_unref(info->conn); return TRUE; |