From ebde40ec0da37da3239506d9812b0d181a9ef83e Mon Sep 17 00:00:00 2001 From: YoungHun Kim Date: Thu, 19 Mar 2020 17:05:13 +0900 Subject: [PATCH] Call shutdown command explicitly to release client resources in signal handler Change-Id: I8112fc27468dc15a194755e8f2020d9bc879fd88 --- packaging/mused.spec | 2 +- server/src/muse_server_signal.c | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packaging/mused.spec b/packaging/mused.spec index f065290..52d1391 100644 --- a/packaging/mused.spec +++ b/packaging/mused.spec @@ -1,6 +1,6 @@ Name: mused Summary: A multimedia daemon -Version: 0.3.103 +Version: 0.3.104 Release: 0 Group: System/Libraries License: Apache-2.0 diff --git a/server/src/muse_server_signal.c b/server/src/muse_server_signal.c index fac02a4..776d800 100644 --- a/server/src/muse_server_signal.c +++ b/server/src/muse_server_signal.c @@ -101,10 +101,8 @@ static void _ms_signal_backtrace(void *arg) uctxt = (ucontext_t *)arg; - if (!uctxt) { - LOGE("Error - null uctxt"); - return; - } + muse_return_if_fail(uctxt); + #if defined(REG_EIP) trace[1] = (void *) uctxt->uc_mcontext.gregs[REG_EIP]; #elif defined(REG_RIP) @@ -140,8 +138,21 @@ static void _ms_signal_backtrace(void *arg) static void _ms_signal_sigaction(int signo, siginfo_t *si, void *arg) { + ms_cmd_dispatcher_info_t dispatch; + ms_connection_t *connection = NULL; + GQueue *queue = NULL; + muse_return_if_fail(si); muse_return_if_fail(arg); + muse_return_if_fail(ms_get_instance()); + + connection = ms_get_instance()->connection; + + if (connection) { + queue = connection->instance_queue; + dispatch.cmd = MUSE_MODULE_COMMAND_SHUTDOWN; + g_queue_foreach(queue, ms_cmd_dispatch_foreach_func, (gpointer)&dispatch); + } ms_remove_ready_file(); -- 2.7.4