From a9d6e763bc9072661dfed180e3c6611ac5277d05 Mon Sep 17 00:00:00 2001 From: "sooyeon.kim" Date: Fri, 7 Oct 2016 20:15:29 +0900 Subject: [PATCH] Fix custom dbus release Change-Id: Ia7d13cb6e52d8e3beb10b10058d74acd19be2382 Signed-off-by: sooyeon.kim --- server/sttd_dbus.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/server/sttd_dbus.c b/server/sttd_dbus.c index 40d47e3..eb24920 100644 --- a/server/sttd_dbus.c +++ b/server/sttd_dbus.c @@ -569,6 +569,52 @@ int __sttd_get_buxtonkey() } +int __sttd_request_custom_dbus_name() +{ + static DBusConnection* g_conn_custom = NULL; + DBusError err; + dbus_error_init(&err); + + /* Create connection for sender */ + g_conn_custom = dbus_bus_get_private(DBUS_BUS_SESSION, &err); + if (dbus_error_is_set(&err)) { + SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Fail dbus_bus_get : %s", err.message); + dbus_error_free(&err); + return STTD_ERROR_OPERATION_FAILED; + } + + int ret = dbus_bus_request_name(g_conn_custom, STT_SERVER_CUSTOM_SERVICE_NAME, DBUS_NAME_FLAG_REPLACE_EXISTING, &err); + if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) { + SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Fail to be primary owner"); + return STTD_ERROR_OPERATION_FAILED; + } + + if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) { + SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Fail to be primary owner"); + return STTD_ERROR_OPERATION_FAILED; + } + + if (dbus_error_is_set(&err)) { + SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] dbus_bus_request_name() : %s", err.message); + dbus_error_free(&err); + return STTD_ERROR_OPERATION_FAILED; + } + + dbus_bus_release_name(g_conn_custom, STT_SERVER_CUSTOM_SERVICE_NAME, &err); + if (dbus_error_is_set(&err)) { + SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] dbus_bus_release_name() : %s", err.message); + dbus_error_free(&err); + return STTD_ERROR_OPERATION_FAILED; + } + + dbus_connection_close(g_conn_custom); + dbus_connection_unref(g_conn_custom); + g_conn_custom = NULL; + + SLOG(LOG_DEBUG, TAG_STTD, "=="); + return 0; +} + int sttd_dbus_open_connection() { DBusError err; @@ -608,6 +654,12 @@ int sttd_dbus_open_connection() return ret; } + ret = __sttd_request_custom_dbus_name(); + if (0 != ret) { + SLOG(LOG_ERROR, TAG_STTD, "[Dbus ERROR] Fail to request custom dbus name"); + return ret; + } + ret = dbus_bus_request_name(g_conn_listener, g_server_service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err); if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) { -- 2.7.4