Name: mused
Summary: A multimedia daemon
-Version: 0.3.89
+Version: 0.3.90
Release: 0
Group: System/Libraries
License: Apache-2.0 and BSD-3-Clause
char *muse_server_module_get_msg(muse_module_h m);
void muse_server_set_user_data(muse_module_h m, void *data);
void *muse_server_get_user_data(muse_module_h m);
+bool muse_server_module_is_valid(muse_module_h m);
/* ipc */
int muse_server_ipc_get_bufmgr(tbm_bufmgr *bufmgr);
gpointer ptr;
muse_return_val_if_fail(m, MM_ERROR_INVALID_ARGUMENT);
- muse_return_val_if_fail(m->pid > 0, MM_ERROR_INVALID_ARGUMENT);
muse_return_val_if_fail(name, MM_ERROR_INVALID_ARGUMENT);
muse_return_val_if_fail(value, MM_ERROR_INVALID_ARGUMENT);
int muse_server_module_get_msg_fd(muse_module_h m)
{
muse_return_val_if_fail(m, MM_ERROR_INVALID_ARGUMENT);
- muse_return_val_if_fail(m->pid > 0, MM_ERROR_INVALID_ARGUMENT);
return m->ch[MUSE_CHANNEL_MSG].sock_fd;
}
int muse_server_module_get_data_fd(muse_module_h m)
{
muse_return_val_if_fail(m, MM_ERROR_INVALID_ARGUMENT);
- muse_return_val_if_fail(m->pid > 0, MM_ERROR_INVALID_ARGUMENT);
return m->ch[MUSE_CHANNEL_DATA].sock_fd;
}
char *muse_server_module_get_msg(muse_module_h m)
{
muse_return_val_if_fail(m, NULL);
- muse_return_val_if_fail(m->pid > 0, NULL);
return (m->recv_msg + m->msg_offset);
}
return m->user_data;
}
+bool muse_server_module_is_valid(muse_module_h m)
+{
+ muse_return_val_if_fail(m, false);
+ muse_return_val_if_fail(m->pid > 0, false);
+
+ return true;
+}
+
/* ipc */
int muse_server_ipc_get_bufmgr(tbm_bufmgr *bufmgr)
{
muse_return_val_if_fail(ms_is_server_ready(), FALSE);
m = (muse_module_h)job->user_data;
- muse_return_val_if_fail(m, FALSE);
+ muse_return_val_if_fail(muse_server_module_is_valid(m), FALSE);
- SECURE_LOGD("[%p] module's msg channel fd : %d", m, m->ch[MUSE_CHANNEL_MSG].sock_fd);
+ SECURE_LOGD("[PID %d %p] module's msg channel fd : %d", m->pid, m, m->ch[MUSE_CHANNEL_MSG].sock_fd);
m->ch[MUSE_CHANNEL_MSG].thread = g_thread_try_new(MSG_THREAD_NAME, _ms_ipc_dispatch_worker, (gpointer)m, &error);
if (!m->ch[MUSE_CHANNEL_MSG].thread && error) {
muse_return_val_if_fail(ms_is_server_ready(), FALSE);
m = (muse_module_h)job->user_data;
- muse_return_val_if_fail(m, FALSE);
+ muse_return_val_if_fail(muse_server_module_is_valid(m), FALSE);
m->ch[MUSE_CHANNEL_DATA].thread = g_thread_try_new(DATA_THREAD_NAME, _ms_ipc_data_worker, (gpointer)m, &error);
if (!m->ch[MUSE_CHANNEL_DATA].thread && error) {
job->job_function = job_functions[channel];
job->user_data = m;
- if (ms_is_server_ready())
+ if (ms_is_server_ready() && muse_server_module_is_valid(m))
ms_workqueue_add_job(muse_server->workqueue, job);
else
free(job);
void ms_workqueue_add_job(ms_workqueue_t *workqueue, ms_workqueue_job_t *job)
{
muse_return_if_fail(workqueue);
+ muse_return_if_fail(job);
pthread_mutex_lock(&workqueue->jobs_mutex);
LL_ADD(job, workqueue->waiting_jobs);