intptr_t ptr_uid = uid;
rpc_port_stub_tts_context_set_tag(context, (void*)ptr_uid);
+ pthread_mutex_lock(&g_tidl_proxy_infos_mutex);
tts_tidl_proxy_info_s* info = __get_tidl_proxy_info_s(uid);
if (NULL == info) {
info = (tts_tidl_proxy_info_s*)calloc(1, sizeof(tts_tidl_proxy_info_s));
if (NULL == info) {
SLOG(LOG_ERROR, tts_tag(), "[TIDL ERROR] Fail to allocate memory for tidl proxy");
+ pthread_mutex_unlock(&g_tidl_proxy_infos_mutex);
return;
}
} else {
+ g_tidl_proxy_infos = g_list_remove(g_tidl_proxy_infos, info);
rpc_port_tts_notify_cb_destroy(info->notify_cb_h);
info->notify_cb_h = NULL;
}
if (0 != rpc_port_tts_notify_cb_clone(callback, &info->notify_cb_h)) {
SLOG(LOG_ERROR, tts_tag(), "[TIDL ERROR] Fail to set notify callback");
free(info);
+ pthread_mutex_unlock(&g_tidl_proxy_infos_mutex);
return;
}
info->uid = uid;
- pthread_mutex_lock(&g_tidl_proxy_infos_mutex);
g_tidl_proxy_infos = g_list_append(g_tidl_proxy_infos, info);
pthread_mutex_unlock(&g_tidl_proxy_infos_mutex);
intptr_t ptr_uid = uid;
rpc_port_stub_tts_context_set_tag(context, (void*)ptr_uid);
+ pthread_mutex_lock(&g_tidl_proxy_infos_mutex);
tts_tidl_proxy_info_s* info = __get_tidl_proxy_info_s(uid);
if (NULL == info) {
info = (tts_tidl_proxy_info_s*)calloc(1, sizeof(tts_tidl_proxy_info_s));
if (NULL == info) {
SLOG(LOG_ERROR, tts_tag(), "[TIDL ERROR] Fail to allocate memory for tidl proxy");
+ pthread_mutex_unlock(&g_tidl_proxy_infos_mutex);
return TTSD_ERROR_OUT_OF_MEMORY;
}
} else {
+ g_tidl_proxy_infos = g_list_remove(g_tidl_proxy_infos, info);
rpc_port_tts_notify_cb_destroy(info->notify_cb_h);
info->notify_cb_h = NULL;
}
if (0 != rpc_port_tts_notify_cb_clone(callback, &info->notify_cb_h)) {
SLOG(LOG_ERROR, tts_tag(), "[TIDL ERROR] Fail to set notify callback");
free(info);
+ pthread_mutex_unlock(&g_tidl_proxy_infos_mutex);
return TTSD_ERROR_OPERATION_FAILED;
}
info->uid = uid;
- pthread_mutex_lock(&g_tidl_proxy_infos_mutex);
g_tidl_proxy_infos = g_list_append(g_tidl_proxy_infos, info);
pthread_mutex_unlock(&g_tidl_proxy_infos_mutex);