summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHyotaek Shim <hyotaek.shim@samsung.com>2021-03-05 11:50:05 +0900
committerHyotaek Shim <hyotaek.shim@samsung.com>2021-03-05 13:32:29 +0900
commitc20a2227be7e27ec83ba1fea807dc53521a90183 (patch)
treedeff819b4bd224bc70b210072604027c8d208334
parent7ad3f5efcb9c71d95978bb9a37fa542ce4822c94 (diff)
downloadactivationd-c20a2227be7e27ec83ba1fea807dc53521a90183.tar.gz
activationd-c20a2227be7e27ec83ba1fea807dc53521a90183.tar.bz2
activationd-c20a2227be7e27ec83ba1fea807dc53521a90183.zip
Apply libsyscommon gdbus api improvement on error handlingsubmit/tizen/20210309.090957accepted/tizen/unified/20210310.145048
Change-Id: Ic707f600baf31b77c70fea15c52b63602febad14 Signed-off-by: Hyotaek Shim <hyotaek.shim@samsung.com>
-rw-r--r--src/core/service.c22
-rw-r--r--src/decision_makers/unit_control_dm.c10
-rw-r--r--src/util/systemd_dbus.c7
3 files changed, 25 insertions, 14 deletions
diff --git a/src/core/service.c b/src/core/service.c
index 574c6e1..ded5440 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -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;
}
diff --git a/src/decision_makers/unit_control_dm.c b/src/decision_makers/unit_control_dm.c
index b7708df..826c88c 100644
--- a/src/decision_makers/unit_control_dm.c
+++ b/src/decision_makers/unit_control_dm.c
@@ -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;
}
diff --git a/src/util/systemd_dbus.c b/src/util/systemd_dbus.c
index 2379f0a..8c9804c 100644
--- a/src/util/systemd_dbus.c
+++ b/src/util/systemd_dbus.c
@@ -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;
}