gdbus: Fix not calling disconnect function
authorSzymon Janc <szymon.janc@tieto.com>
Mon, 23 Feb 2015 18:33:00 +0000 (19:33 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 24 Feb 2015 17:24:42 +0000 (18:24 +0100)
If daemon gets disconnected from D-Bus sender is NULL. Watches that
was explicitly added with NULL sender (ie disconnected_signal in
g_dbus_set_disconnect_function) should be called anyway.

gdbus/watch.c

index 0d0054c11ea9c948c7612b9b2890ae99454aeb6f..b60f650fd41fb9c8c72fba6c73bc0eea918de730 100644 (file)
@@ -523,9 +523,7 @@ static DBusHandlerResult message_filter(DBusConnection *connection,
        member = dbus_message_get_member(message);
        dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &arg, DBUS_TYPE_INVALID);
 
-       /* Sender is always the owner */
-       if (sender == NULL)
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+       /* If sender != NULL it is always the owner */
 
        for (current = listeners; current != NULL; current = current->next) {
                data = current->data;
@@ -533,6 +531,9 @@ static DBusHandlerResult message_filter(DBusConnection *connection,
                if (connection != data->connection)
                        continue;
 
+               if (!sender && data->owner)
+                       continue;
+
                if (data->owner && g_str_equal(sender, data->owner) == FALSE)
                        continue;