{
int ret_val;
int i;
+ dbus_handle_h handle = NULL;
+
+ if (data)
+ handle = *(dbus_handle_h *)data;
udev_init(NULL);
_E("Failed to mount tmpfs to root mount path: %d", ret_val);
/* register block manager object and interface */
- ret_val = gdbus_register_object(NULL, STORAGED_PATH_BLOCK_MANAGER, &block_interface);
+ ret_val = gdbus_register_object(handle, STORAGED_PATH_BLOCK_MANAGER, &block_interface);
if (ret_val < 0)
_E("Failed to register block interface and methods: %d", ret_val);
#define STORAGED_DIR_PATH "/run/storaged"
static GMainLoop *loop;
+static dbus_handle_h g_handle = NULL;
static gboolean handle_signal(gpointer data)
{
{
guint timer;
int ret;
- dbus_handle_h handle = NULL;
- handle = gdbus_get_connection(G_BUS_TYPE_SYSTEM, FALSE);
- if (!handle)
+ g_handle = gdbus_get_connection(G_BUS_TYPE_SYSTEM, TRUE);
+ if (!g_handle)
_E("Failed to get dbus connection.");
dir_init();
- modules_init(NULL);
+ modules_init((void *)&g_handle);
- ret = gdbus_request_name(handle, STORAGED_BUS_NAME, dbus_name_acquired, NULL);
+ ret = gdbus_request_name(g_handle, STORAGED_BUS_NAME, dbus_name_acquired, NULL);
if (ret <= 0) {
_E("Failed to request bus name.");
gdbus_check_name_owner(NULL, STORAGED_BUS_NAME);
static int storaged_exit(void *data)
{
+ int ret = 0;
modules_deinit(NULL);
+ if (!g_handle)
+ return 0;
+
+ ret = gdbus_free_connection(g_handle);
+ if (ret < 0) {
+ _E("Failed to free dbus connection %d", ret);
+ g_handle = NULL;
+ return ret;
+ }
+
+ g_handle = NULL;
+
return 0;
}
static void storage_init(void *data)
{
int ret_val;
+ dbus_handle_h handle = NULL;
+
+ if (data)
+ handle = *(dbus_handle_h *)data;
/* UDEV udev_init */
udev_init(NULL);
storage_config_load();
- ret_val = gdbus_register_object(NULL, STORAGED_PATH_STORAGE,
+ ret_val = gdbus_register_object(handle, STORAGED_PATH_STORAGE,
&storage_interface);
if (ret_val < 0)
_E("Failed to register dbus interface and methods: %d", ret_val);