mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Fail mc_util_make_filter_interface_name");
ret = mc_ipc_register_listener(&mc_client->listeners, mc_client->dconn, filter_interface_name, signal_name, callback, user_data);
- if (ret == MEDIA_CONTROLLER_ERROR_NONE)
- *filter_list = g_list_append(*filter_list, strdup(filter_interface_name));
+ if (ret == MEDIA_CONTROLLER_ERROR_NONE) {
+ char *filter_data = (char *)g_strdup(server_name);
+ if (filter_data == NULL) {
+ mc_debug("memeory allocation failed");
+ mc_ipc_unregister_listener(&mc_client->listeners, mc_client->dconn, filter_interface_name, signal_name);
+ MC_SAFE_FREE(filter_interface_name);
+ return MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY;
+ }
+ *filter_list = g_list_append(*filter_list, filter_data);
+ }
MC_SAFE_FREE(filter_interface_name);
interface_name = g_list_nth_data(*filter_list, idx);
if (MC_STRING_VALID(interface_name)) {
- if (g_strcmp0(interface_name, filter_interface_name) == 0) {
+ if (g_strcmp0(interface_name, server_name) == 0) {
mc_debug("Unset subscriber [%d][%s]", idx, interface_name);
*filter_list = g_list_remove(*filter_list, interface_name);
MC_SAFE_FREE(interface_name);
return ret;
}
-static int __mc_parse_server_name(const char *interface_name, char **server_name)
-{
- mc_retvm_if(interface_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "interface_name is NULL");
- mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "server_name is NULL");
-
- *server_name = strdup(interface_name + strlen(MC_DBUS_UPDATE_INTERFACE) + 1);
-
- return MEDIA_CONTROLLER_ERROR_NONE;
-}
-
static int __mc_client_send_command(mc_client_h client, const char *server_name, const char *command_type, const char *command, const char *signal_name, const char *message, char **request_id)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
int idx = 0;
char *server_name = NULL;
GList *filter_list = NULL;
- char *filter_data = NULL;
int filter_cnt = 0;
mc_retvm_if(mc_client == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
filter_cnt = g_list_length(filter_list);
for (idx = 0; idx < filter_cnt; idx++) {
- filter_data = (char*)g_list_nth_data(filter_list, idx);
- ret = __mc_parse_server_name(filter_data, &server_name);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail __mc_parse_server_name");
-
+ server_name = g_strdup((char*)g_list_nth_data(filter_list, idx));
if (MC_STRING_VALID(server_name)) {
if (callback(server_name, user_data) == false) {
MC_SAFE_FREE(server_name);
break;
}
}
-
MC_SAFE_FREE(server_name);
}