Update the value of server state when kill signal is catched to avoid the issue of... 18/189318/4 accepted/tizen/unified/20180919.142005 submit/tizen/20180918.103706 submit/tizen/20180919.054854
authorYoungHun Kim <yh8004.kim@samsung.com>
Mon, 17 Sep 2018 04:45:56 +0000 (13:45 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Mon, 17 Sep 2018 05:43:45 +0000 (14:43 +0900)
Change-Id: Ib7a280b7d5a7001c21dc14610c74ef90ba5c21e8

packaging/mused.spec
server/include/muse_server_private.h
server/src/muse_server_connection.c
server/src/muse_server_ipc.c
server/src/muse_server_private.c
server/src/muse_server_signal.c

index 6a130b7..9eee250 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mused
 Summary:    A multimedia daemon
-Version:    0.3.49
+Version:    0.3.50
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index c260696..29da4e8 100644 (file)
@@ -101,6 +101,8 @@ gboolean ms_init_bufmgr(void);
 void ms_deinit_bufmgr(void);
 void ms_cmd_dispatch_foreach_func(gpointer data, gpointer user_data);
 void ms_set_state(ms_state_e state);
+void ms_set_running(gboolean value);
+gboolean ms_is_running(void);
 
 #ifdef __cplusplus
 }
index 99a7a93..38598d3 100644 (file)
@@ -63,7 +63,8 @@ static void _ms_connection_module_instance_info(muse_module_h m, ms_connection_t
 
        if (caution_instance != DEFAULT_CAUTION_INSTANCE && connection->instance_count[m->idx] > caution_instance) {
                LOGI("[MUSE_MODULE_COMMAND_CREATE_CAUTION] player # %d | camera # %d | recorder # %d > %d",
-                       connection->instance_count[MUSE_PLAYER], connection->instance_count[MUSE_CAMERA], connection->instance_count[MUSE_RECORDER], caution_instance);
+                       connection->instance_count[MUSE_PLAYER], connection->instance_count[MUSE_CAMERA],
+                       connection->instance_count[MUSE_RECORDER], caution_instance);
                ms_cmd_dispatch(m, MUSE_MODULE_COMMAND_CREATE_CAUTION);
        }
 }
index 914ac8a..2fd0250 100644 (file)
@@ -111,7 +111,7 @@ static gpointer _ms_ipc_dispatch_worker(gpointer data)
                        idx = 0;
                        m->msg_offset = 0;
 
-                       while (m->msg_offset < len) {
+                       while (m->msg_offset < len && ms_is_running()) {
                                jobj = muse_core_msg_object_new(m->recv_msg + m->msg_offset, &parse_len, NULL);
                                if (!jobj) {
                                        LOGE("jobj is null");
@@ -317,6 +317,7 @@ gboolean ms_ipc_job_function(ms_workqueue_job_t *job)
 
        LOGD("Enter");
        g_return_val_if_fail(job, FALSE);
+       g_return_val_if_fail(ms_is_running(), FALSE);
 
        m = (muse_module_h)job->user_data;
        g_return_val_if_fail(m, FALSE);
@@ -345,6 +346,7 @@ gboolean ms_ipc_data_job_function(ms_workqueue_job_t *job)
        LOGD("Enter");
 
        g_return_val_if_fail(job, FALSE);
+       g_return_val_if_fail(ms_is_running(), FALSE);
 
        m = (muse_module_h)job->user_data;
        g_return_val_if_fail(m, FALSE);
index 0b46c99..9174470 100644 (file)
@@ -139,7 +139,7 @@ static void _ms_create_new_server_from_fd(int fd[], int type)
        gettimeofday(&muse_server->tv_s, NULL);
 
        /*initiate server */
-       g_atomic_int_set(&muse_server->running, 1);
+       ms_set_running(TRUE);
 
        for (i = 0; i < MUSE_CHANNEL_MAX; i++) {
                if (!_ms_attach(fd[i], _ms_connection_handler, (gpointer)(intptr_t) i)) {
@@ -897,3 +897,13 @@ void ms_set_state(ms_state_e state)
        g_mutex_unlock(&muse_server->state_lock);
 }
 
+void ms_set_running(gboolean value)
+{
+       g_atomic_int_set(&muse_server->running, value);
+}
+
+gboolean ms_is_running(void)
+{
+       return (gboolean)g_atomic_int_get(&ms_get_instance()->running);
+}
+
index a834544..101e95a 100644 (file)
@@ -50,6 +50,8 @@ static void _ms_signal_handler(int signo)
 
        LOGD("signo(%d)", signo);
 
+       ms_set_running(FALSE);
+
        switch (signo) {
        case SIGSEGV:
                sigaction(SIGSEGV, &ms_segv_old_action, NULL);
@@ -71,7 +73,6 @@ static void _ms_signal_handler(int signo)
        }
 
        raise(signo);
-
 }
 
 static void _ms_signal_debug_pid_info(int pid)
@@ -102,7 +103,7 @@ static void _ms_signal_backtrace(void *arg)
                LOGE("backtrace error: %s", err_msg);
        }
 
-       uctxt = (ucontext_t *) arg;
+       uctxt = (ucontext_t *)arg;
 
        if (!uctxt) {
                LOGE("Error - null uctxt");