From d53c7860828fa8c462e43ecc2408af0c6e52d778 Mon Sep 17 00:00:00 2001 From: "sooyeon.kim" Date: Fri, 24 Jul 2020 17:40:49 +0900 Subject: [PATCH] Remove only proper dbus match Change-Id: I41bcb8fa422885483b7aec32e31491562d791600 Signed-off-by: sooyeon.kim --- client/tts.c | 10 ++++++++++ client/tts_dbus.c | 38 ++++++++++++++++++++------------------ client/tts_dbus.h | 1 + 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/client/tts.c b/client/tts.c index 333e26d..f3e61db 100644 --- a/client/tts.c +++ b/client/tts.c @@ -575,6 +575,10 @@ int tts_destroy(tts_h tts) } while (0 != ret); } else { SLOG(LOG_WARN, TAG_TTSC, "[WARNING] Do not request finalize : g_sr(%d) mode(%d)", g_screen_reader, client->mode); + ret = tts_dbus_remove_match(client->mode); + if (0 != ret) { + SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to remove match : %s", __tts_get_error_code(ret)); + } } client->before_state = client->current_state; @@ -1292,6 +1296,10 @@ int tts_unprepare(tts_h tts) } while (0 != ret); } else { SLOG(LOG_WARN, TAG_TTSC, "[WARNING] Do not request finalize : g_sr(%d) mode(%d)", g_screen_reader, client->mode); + ret = tts_dbus_remove_match(client->mode); + if (0 != ret) { + SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to remove match : %s", __tts_get_error_code(ret)); + } } client->before_state = client->current_state; @@ -2631,6 +2639,7 @@ int __tts_cb_error(int uid, tts_error_e reason, int utt_id, char* err_msg) data->current_state = TTS_STATE_CREATED; data->reason = 0; + tts_dbus_remove_match(client->mode); if (NULL == data->thread) { SLOG(LOG_INFO, TAG_TTSC, "[INFO] ecore thread run: start_reprepare_thread"); data->thread = ecore_thread_run(__start_reprepare_thread, __end_reprepare_thread, NULL, data->tts); @@ -2672,6 +2681,7 @@ int __tts_cb_error(int uid, tts_error_e reason, int utt_id, char* err_msg) client->current_state = TTS_STATE_CREATED; client->reason = 0; + tts_dbus_remove_match(client->mode); if (NULL == client->thread) { SLOG(LOG_INFO, TAG_TTSC, "[INFO] ecore thread run: start_reprepare_thread"); client->thread = ecore_thread_run(__start_reprepare_thread, __end_reprepare_thread, NULL, client->tts); diff --git a/client/tts_dbus.c b/client/tts_dbus.c index 9aa09f4..3adfdc5 100644 --- a/client/tts_dbus.c +++ b/client/tts_dbus.c @@ -105,9 +105,15 @@ static int __tts_dbus_remove_match(int mode) dbus_error_free(&err); } + SLOG(LOG_ERROR, TAG_TTSC, "[INFO] dbus match of mode(%d) is removed", mode); return 0; } +int tts_dbus_remove_match(int mode) +{ + return __tts_dbus_remove_match(mode); +} + static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler) { if (NULL == g_conn_listener) return ECORE_CALLBACK_RENEW; @@ -230,11 +236,6 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle else if (dbus_message_is_signal(msg, "org.freedesktop.DBus", "NameOwnerChanged")) { SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Owner Changed"); - __tts_dbus_remove_match(TTS_MODE_DEFAULT); - __tts_dbus_remove_match(TTS_MODE_NOTIFICATION); - __tts_dbus_remove_match(TTS_MODE_SCREEN_READER); - __tts_dbus_remove_match(TTS_MODE_INTERRUPT); - __tts_cb_error(-1, TTS_ERROR_SERVICE_RESET, -1, "Daemon Reset"); SLOG(LOG_DEBUG, TAG_TTSC, "@@@"); SLOG(LOG_DEBUG, TAG_TTSC, " "); @@ -242,6 +243,14 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle else { SLOG(LOG_DEBUG, TAG_TTSC, "Message is NOT valid"); + const char* sender = dbus_message_get_sender(msg); + const char* destination = dbus_message_get_destination(msg); + const char* path = dbus_message_get_path(msg); + const char* interf = dbus_message_get_interface(msg); + const char* member = dbus_message_get_member(msg); + int type = dbus_message_get_type(msg); + SLOG(LOG_ERROR, TAG_TTSC, "[INFO] Message is NOT valid, sender(%s), destination(%s), path(%s), interface(%s), member(%s), type(%d)", sender, destination, path, interf, member, type); + dbus_message_unref(msg); break; } @@ -612,35 +621,28 @@ int tts_dbus_request_initialize(int uid, bool* credential_needed) return result; } - int tts_dbus_request_finalize(int uid) { DBusMessage* msg; DBusError err; dbus_error_init(&err); - /* remove a rule for daemon error */ - char rule_err[256] = {0, }; tts_client_s* client = tts_client_get_by_uid(uid); if (NULL == client) { SLOG(LOG_ERROR, TAG_TTSC, "Fail to get TTS client"); return TTS_ERROR_OPERATION_FAILED; } + /* remove a rule for daemon error */ + SLOG(LOG_INFO, TAG_TTSC, "[INFO] Remove match, mode(%d)", client->mode); if (TTS_MODE_DEFAULT == client->mode) { - snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE); + __tts_dbus_remove_match(TTS_MODE_DEFAULT); } else if (TTS_MODE_NOTIFICATION == client->mode) { - snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE); + __tts_dbus_remove_match(TTS_MODE_NOTIFICATION); } else if (TTS_MODE_SCREEN_READER == client->mode) { - snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE); + __tts_dbus_remove_match(TTS_MODE_SCREEN_READER); } else if (TTS_MODE_INTERRUPT == client->mode) { - snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_INTERRUPT_SERVER_SERVICE_INTERFACE); - } - dbus_bus_remove_match(g_conn_listener, rule_err, &err); - dbus_connection_flush(g_conn_listener); - if (dbus_error_is_set(&err)) { - SLOG(LOG_ERROR, TAG_TTSC, "Match Error (%s)", err.message); - dbus_error_free(&err); + __tts_dbus_remove_match(TTS_MODE_INTERRUPT); } msg = __tts_dbus_make_message(uid, TTS_METHOD_FINALIZE); diff --git a/client/tts_dbus.h b/client/tts_dbus.h index a59ebc6..f3ed99f 100644 --- a/client/tts_dbus.h +++ b/client/tts_dbus.h @@ -35,6 +35,7 @@ int tts_dbus_request_finalize(int uid); int tts_dbus_set_sound_type(int uid, int type); +int tts_dbus_remove_match(int mode); int tts_dbus_request_add_text(int uid, const char* text, const char* lang, int vctype, int speed, int uttid, const char* credential); -- 2.7.4