From 733e792bc603f580c7a0e3031917982bb7399994 Mon Sep 17 00:00:00 2001 From: Alan Jenkins Date: Sat, 16 Sep 2017 14:39:22 +0100 Subject: [PATCH] sd-bus: fix response for GetAll on non-existent objects Before this commit, if you run `loginctl user-status` from debug-shell.service (and you have no login sessions for root), you always see this output: 0 Linger: no because Properties.GetAll is returning success but without any properties, when the only find() callback had returned 0 to mean "no object found". After: Could not get properties: Unknown object: '/org/freedesktop/login1/user/self' BTW I have a fix for more user-friendly messages from logind in this case. It is pending in my local branch for #6829 "fix `loginctl enable-linger`". --- src/libsystemd/sd-bus/bus-objects.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c index bb06d302ca1..a4c0cc5db1f 100644 --- a/src/libsystemd/sd-bus/bus-objects.c +++ b/src/libsystemd/sd-bus/bus-objects.c @@ -829,6 +829,9 @@ static int property_get_all_callbacks_run( return 0; } + if (!*found_object) + return 0; + if (!found_interface) { r = sd_bus_reply_method_errorf( m, -- 2.47.3