mirror of
https://github.com/systemd/systemd.git
synced 2025-02-28 05:57:33 +03:00
bus-driverd: Fix return code in driver_request_name
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.
This commit is contained in:
parent
a69f4254a8
commit
3263ef39b8
@ -348,10 +348,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", BUS_NAME_EXISTS);
|
||||
else if (errno == EALREADY)
|
||||
return sd_bus_reply_method_return(m, "u", BUS_NAME_ALREADY_OWNER);
|
||||
else
|
||||
return sd_bus_reply_method_return(m, "u", -errno);
|
||||
}
|
||||
|
||||
return sd_bus_reply_method_return(m, "u", 0);
|
||||
if (cmd_name->flags & KDBUS_NAME_IN_QUEUE)
|
||||
return sd_bus_reply_method_return(m, "u", BUS_NAME_IN_QUEUE);
|
||||
|
||||
return sd_bus_reply_method_return(m, "u", BUS_NAME_PRIMARY_OWNER);
|
||||
}
|
||||
|
||||
static int driver_start_service_by_name(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user