Apply libsyscommon gdbus api improvement on error handling 87/254587/5 accepted/tizen/unified/20210310.145048 submit/tizen/20210309.090957
authorHyotaek Shim <hyotaek.shim@samsung.com>
Fri, 5 Mar 2021 02:50:05 +0000 (11:50 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Fri, 5 Mar 2021 04:32:29 +0000 (13:32 +0900)
Change-Id: Ic707f600baf31b77c70fea15c52b63602febad14
Signed-off-by: Hyotaek Shim <hyotaek.shim@samsung.com>
src/core/service.c
src/decision_makers/unit_control_dm.c
src/util/systemd_dbus.c

index 574c6e1ecd5b4c604d2f1f7e9bca9995cf4de89e..ded5440da4e58b7e2f89aaa8861d75dcb477cecb 100644 (file)
@@ -51,16 +51,18 @@ int systemd_service_init_by_pid(pid_t pid, struct systemd_service *s)
 
 static int get_service_name(const char *dbus_path, char **service_name)
 {
-       GVariant *reply = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1",
+       int ret;
+       GVariant *reply = NULL;
+       ret = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1",
                                                        dbus_path,
                                                        "org.freedesktop.DBus.Properties",
                                                        "Get",
-                                                       g_variant_new("ss", "org.freedesktop.systemd1.Unit", "Id"));
-
+                                                       g_variant_new("ss", "org.freedesktop.systemd1.Unit", "Id"),
+                                                       &reply);
 
-       if (!reply) {
+       if (ret < 0) {
                log_error("Failed to get \"Id\" property of %s", dbus_path);
-               return -ENOMEM;
+               return -EAGAIN;
        }
 
        g_variant_get(reply, "(s)", service_name);
@@ -129,17 +131,19 @@ void systemd_service_cleanup(struct systemd_service *s)
 
 int systemd_get_unit_by_pid(pid_t pid, const char **name)
 {
-       GVariant *reply;
+       int ret;
+       GVariant *reply = NULL;
 
        assert(name);
 
-       reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_SERVICE,
+       ret = dbus_handle_method_sync_with_reply_var(SYSTEMD_SERVICE,
                                                        SYSTEMD_OBJ,
                                                        SYSTEMD_MANAGER_INTERFACE,
                                                        "GetUnitByPID",
-                                                       g_variant_new("u", pid));
+                                                       g_variant_new("u", pid),
+                                                       &reply);
 
-       if (!reply) {
+       if (ret < 0) {
                log_error("Failed to issue \"GetUnitByPID\" method call.");
                return -1;
        }
index b7708dff6a5891b746bb733c9aefa6798fc6a7a3..826c88c93bd5519773a4d3550c7c93f0803c0f40 100644 (file)
@@ -61,7 +61,8 @@ static int list_unit_by_pattern(const char *pattern, GVariant **reply)
 {
        assert(pattern);
 
-       GVariant *result;
+       int ret;
+       GVariant *result = NULL;
        char *patterns[2] = {};
        char *unit_states[] = {
                "loaded",
@@ -69,14 +70,15 @@ static int list_unit_by_pattern(const char *pattern, GVariant **reply)
        };
 
        patterns[0] = (char *)pattern;
-       result = dbus_handle_method_sync_with_reply_var(
+       ret = dbus_handle_method_sync_with_reply_var(
                        SYSTEMD_SERVICE,
                        SYSTEMD_OBJ,
                        SYSTEMD_MANAGER_INTERFACE,
                        "ListUnitsByPatterns",
-                       g_variant_new("(asas)", (char **)unit_states, (char **)patterns));
+                       g_variant_new("(asas)", (char **)unit_states, (char **)patterns),
+                       &result);
 
-       if (!result) {
+       if (ret < 0) {
                log_error("Failed to issue ListUnitsByPatterns() call.");
                return -1;
        }
index 2379f0a89abc2de19fb7ddc8e7557b8c01fb25ea..8c9804c4178da907c1c805f2c34506288bb9cf19 100644 (file)
@@ -53,6 +53,7 @@ int epc_dbus_call_async(char *service, char *obj, char *interface, char *method,
 int epc_dbus_call(char *service, char *obj, char *interface, char *method,
                                         char *types, ...)
 {
+       int ret, reply = 0;
        dbus_handle_h bus = NULL;
        GVariant *var = NULL;
 
@@ -68,5 +69,9 @@ int epc_dbus_call(char *service, char *obj, char *interface, char *method,
                va_end(args);
        }
 
-       return dbus_handle_method_sync_var(service, obj, interface, method, var);
+       ret = dbus_handle_method_sync_var(service, obj, interface, method, var, &reply);
+       if (ret < 0)
+               return -EAGAIN;
+       else
+               return 0;
 }