[systemd-devel] [PATCH] bus-driverd: Fix return code in driver_request_name

Lukasz Skalski l.skalski at partner.samsung.com
Tue Dec 17 04:48:14 PST 2013


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 | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/bus-driverd/bus-driverd.c b/src/bus-driverd/bus-driverd.c
index d2b3e08..36d90df 100644
--- a/src/bus-driverd/bus-driverd.c
+++ b/src/bus-driverd/bus-driverd.c
@@ -403,10 +403,16 @@ 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;
 
-        return sd_bus_reply_method_return(m, "u", 0);
+        if (r == EEXIST)
+                return sd_bus_reply_method_return(m, "u", 3);
+        else if (r == EALREADY)
+                return sd_bus_reply_method_return(m, "u", 4);
+        else if (r == 0)
+                return sd_bus_reply_method_return(m, "u", 2);
+        else
+                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



More information about the systemd-devel mailing list