g_hash_table_destroy(_ctsvc_handle_table);
_ctsvc_handle_table = NULL;
}
- ctsvc_mutex_unlock(CTS_MUTEX_HANDLE);
ctsvc_handle_destroy(contact);
+ ctsvc_mutex_unlock(CTS_MUTEX_HANDLE);
return CONTACTS_ERROR_NONE;
}
if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
ret = CONTACTS_ERROR_IPC;
- if (0 == ((ctsvc_base_s *)contact)->connection_count) {
- ret = ctsvc_client_handle_remove(id, contact);
- WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_client_handle_remove() Fail(%d)", ret);
- }
-
return ret;
}
}
_ctsvc_connection--;
+
+ if (0 == base->connection_count) {
+ ret = ctsvc_client_handle_remove(ctsvc_client_get_pid(), contact);
+ WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_client_handle_remove() Fail(%d)", ret);
+ }
ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
return CONTACTS_ERROR_NONE;
RETV_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER);
ctsvc_base_s *base = (ctsvc_base_s *)contact;
free(base);
+ base = NULL;
return CONTACTS_ERROR_NONE;
}