RequestName return codes should be consistent with Dbus Specification. VALUE - DESCRIPTION 1-The caller is now the primary owner of the name, replacing any previous owner, 2-The name already had an owner (QUEUE flag was not specified), 3-The name already has an owner (QUEUE flag was specified), 4-Application trying to request ownership of a name is already the owner of it. --- src/bus-driverd/bus-driverd.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/bus-driverd/bus-driverd.c b/src/bus-driverd/bus-driverd.c index d2b3e08..dd5eb33 100644 --- a/src/bus-driverd/bus-driverd.c +++ b/src/bus-driverd/bus-driverd.c @@ -403,10 +403,19 @@ static int driver_request_name(sd_bus *bus, sd_bus_message *m, void *userdata, s cmd_name->id = id; r = ioctl(sd_bus_get_fd(bus), KDBUS_CMD_NAME_ACQUIRE, cmd_name); - if (r < 0) - return r; + if (r < 0) { + if (errno == EEXIST) + return sd_bus_reply_method_return(m, "u", 3); + else if (errno == EALREADY) + return sd_bus_reply_method_return(m, "u", 4); + else + return sd_bus_reply_method_return(m, "u", -r); + } + + if (cmd_name->flags & KDBUS_NAME_IN_QUEUE) + return sd_bus_reply_method_return(m, "u", 2); - return sd_bus_reply_method_return(m, "u", 0); + return sd_bus_reply_method_return(m, "u", 1); } static int driver_start_service_by_name(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) { -- 1.8.3.2 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel