X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibelogind%2Fsd-bus%2Fbus-objects.c;h=98911d520366004e04bedeffec522e65d1199363;hb=HEAD;hp=38fc029b5a78114986345c12031c49a7d3ae4565;hpb=6eed9ed454fb055f6e283858af01ffbb18c991fd;p=elogind.git diff --git a/src/libelogind/sd-bus/bus-objects.c b/src/libelogind/sd-bus/bus-objects.c index 38fc029b5..98911d520 100644 --- a/src/libelogind/sd-bus/bus-objects.c +++ b/src/libelogind/sd-bus/bus-objects.c @@ -974,8 +974,10 @@ static int process_introspect( /* Nothing?, let's see if we exist at all, and if not * refuse to do anything */ r = bus_node_exists(bus, n, m->path, require_fallback); - if (r <= 0) + if (r <= 0) { + r = bus_maybe_reply_error(m, r, &error); goto finish; + } if (bus->nodes_modified) { r = 0; goto finish; @@ -1057,6 +1059,22 @@ static int object_manager_serialize_path( if (r < 0) return r; + r = sd_bus_message_append(reply, "{sa{sv}}", "org.freedesktop.DBus.Peer", 0); + if (r < 0) + return r; + + r = sd_bus_message_append(reply, "{sa{sv}}", "org.freedesktop.DBus.Introspectable", 0); + if (r < 0) + return r; + + r = sd_bus_message_append(reply, "{sa{sv}}", "org.freedesktop.DBus.Properties", 0); + if (r < 0) + return r; + + r = sd_bus_message_append(reply, "{sa{sv}}", "org.freedesktop.DBus.ObjectManager", 0); + if (r < 0) + return r; + found_something = true; } @@ -1183,7 +1201,7 @@ static int process_get_managed_objects( r = get_child_nodes(bus, m->path, n, CHILDREN_RECURSIVE, &s, &error); if (r < 0) - return r; + return bus_maybe_reply_error(m, r, &error); if (bus->nodes_modified) return 0; @@ -1198,7 +1216,7 @@ static int process_get_managed_objects( SET_FOREACH(path, s, i) { r = object_manager_serialize_path_and_fallbacks(bus, reply, path, &error); if (r < 0) - return r; + return bus_maybe_reply_error(m, r, &error); if (bus->nodes_modified) return 0; @@ -1328,7 +1346,7 @@ static int object_find_and_run( if (!*found_object) { r = bus_node_exists(bus, n, m->path, require_fallback); if (r < 0) - return r; + return bus_maybe_reply_error(m, r, NULL); if (bus->nodes_modified) return 0; if (r > 0) @@ -2363,7 +2381,6 @@ _public_ int sd_bus_emit_object_added(sd_bus *bus, const char *path) { return sd_bus_send(bus, m, NULL); } -#if 0 /// UNNEEDED by elogind static int object_removed_append_all_prefix( sd_bus *bus, sd_bus_message *m, @@ -2533,7 +2550,6 @@ _public_ int sd_bus_emit_object_removed(sd_bus *bus, const char *path) { return sd_bus_send(bus, m, NULL); } -#endif // 0 static int interfaces_added_append_one_prefix( sd_bus *bus, @@ -2772,7 +2788,6 @@ _public_ int sd_bus_emit_interfaces_removed(sd_bus *bus, const char *path, const return sd_bus_emit_interfaces_removed_strv(bus, path, interfaces); } -#if 0 /// UNNEEDED by elogind _public_ int sd_bus_add_object_manager(sd_bus *bus, sd_bus_slot **slot, const char *path) { sd_bus_slot *s; struct node *n; @@ -2807,4 +2822,3 @@ fail: return r; } -#endif // 0