void _socket_info_free(gpointer socket)
{
+ GError *error = NULL;
datacontrol_socket_info *socket_info = (datacontrol_socket_info *)socket;
if (socket_info != NULL) {
- if (socket_info->socket_fd != 0) {
- shutdown(socket_info->socket_fd, SHUT_RDWR);
- LOGE("shutdown socketpair !!!! %d ", socket_info->socket_fd);
- }
if (socket_info->gio_read != NULL) {
+ LOGE("shutdown socketpair !!!! %d ", socket_info->socket_fd);
+ g_io_channel_shutdown(socket_info->gio_read, TRUE, &error);
+ if (error) {
+ LOGE("g_io_channel_shutdown error : %s", error->message);
+ g_error_free(error);
+ }
g_io_channel_unref(socket_info->gio_read);
socket_info->gio_read = NULL;
}
{
datacontrol_socket_info *socket_info;
int ret = DATACONTROL_ERROR_NONE;
+ const char *caller;
+ const char *callee;
+ char *dup_caller;
const char *request_type = bundle_get_val(b, OSP_K_DATACONTROL_REQUEST_TYPE);
if (request_type == NULL) {
- char *caller = (char *)bundle_get_val(b, AUL_K_CALLER_APPID);
- char *callee = (char *)bundle_get_val(b, AUL_K_CALLEE_APPID);
+ caller = bundle_get_val(b, AUL_K_CALLER_APPID);
+ callee = bundle_get_val(b, AUL_K_CALLEE_APPID);
+
+ if (caller == NULL) {
+ LOGE("Invalid data control request caller is NULL");
+ return DATACONTROL_ERROR_INVALID_PARAMETER;
+ }
- socket_info = g_hash_table_lookup(__socket_pair_hash, caller);
+ dup_caller = strdup(caller);
+ socket_info = g_hash_table_lookup(__socket_pair_hash, dup_caller);
if (socket_info != NULL)
- g_hash_table_remove(__socket_pair_hash, caller);
+ g_hash_table_remove(__socket_pair_hash, dup_caller);
- socket_info = _add_watch_on_socket_info(caller, callee, "provider", __provider_recv_message, caller);
+ socket_info = _add_watch_on_socket_info(dup_caller, callee, "provider", __provider_recv_message, dup_caller);
if (socket_info == NULL)
return DATACONTROL_ERROR_IO_ERROR;
- g_hash_table_insert(__socket_pair_hash, strdup(caller), socket_info);
+ g_hash_table_insert(__socket_pair_hash, dup_caller, socket_info);
} else {
/* Get the request type */
datacontrol_request_type type = atoi(request_type);