summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorInkyun Kil <inkyun.kil@samsung.com>2020-06-15 09:27:06 +0900
committerInkyun Kil <inkyun.kil@samsung.com>2020-06-15 09:27:06 +0900
commit02f110a6d0ad4f9af028d89f4f9c6238527f8cda (patch)
tree4bdc79ef6b19856e0ca2edc578d58ae4fe3e0b84
parent16d4bb17d19aa4b25161700ae70f082e61f78acb (diff)
downloadalarm-manager-02f110a6d0ad4f9af028d89f4f9c6238527f8cda.tar.gz
alarm-manager-02f110a6d0ad4f9af028d89f4f9c6238527f8cda.tar.bz2
alarm-manager-02f110a6d0ad4f9af028d89f4f9c6238527f8cda.zip
Changes code for defensing gdbus race condition
Change-Id: Iae66d7c5c4298bc41e41f1325d60cead843ad32f Signed-off-by: Inkyun Kil <inkyun.kil@samsung.com>
-rw-r--r--server/alarm-manager-dbus.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/server/alarm-manager-dbus.c b/server/alarm-manager-dbus.c
index db290cc..42cb1f2 100644
--- a/server/alarm-manager-dbus.c
+++ b/server/alarm-manager-dbus.c
@@ -750,19 +750,6 @@ static void __on_bus_name_acquired(GDBusConnection *connection,
gpointer user_data)
{
LOGD("bus acquired(%s)", name);
-
- guint reg_id = 0;
- GError *error = NULL;
-
- reg_id = g_dbus_connection_register_object(connection,
- ALARM_MGR_DBUS_PATH,
- introspection_data->interfaces[0],
- &interface_vtable,
- NULL, NULL, &error);
- if (reg_id == 0) {
- LOGE("g_dbus_connection_register_object error(%s)", error->message);
- g_error_free(error);
- }
}
static void __on_bus_name_owner_changed(GDBusConnection *connection,
@@ -813,6 +800,8 @@ bool _initialize_dbus(void)
GError *error = NULL;
guint subsc_id;
guint owner_id;
+ guint reg_id;
+
LOGD("__initialize_dbus Enter");
connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
@@ -843,10 +832,21 @@ bool _initialize_dbus(void)
return false;
}
+ reg_id = g_dbus_connection_register_object(connection,
+ ALARM_MGR_DBUS_PATH,
+ introspection_data->interfaces[0],
+ &interface_vtable,
+ NULL, NULL, &error);
+ if (reg_id == 0) {
+ LOGE("g_dbus_connection_register_object error(%s)", error->message);
+ g_dbus_node_info_unref(introspection_data);
+ g_object_unref(connection);
+ g_error_free(error);
+ }
+
owner_id = g_bus_own_name_on_connection(connection,
ALARM_MGR_DBUS_NAME, G_BUS_NAME_OWNER_FLAGS_NONE,
__on_bus_name_acquired, NULL, NULL, NULL);
-
if (owner_id == 0) {
LOGE("Acquiring the own name is failed.");
g_dbus_node_info_unref(introspection_data);