if (mdgd_db_check_device_exist((char *)devices[i]) == false)
mdgd_iot_unpair(name, devices[i]->device_id);
+
+ if (devices[i]) {
+ if (devices[i]->device_id) {
+ free(devices[i]->device_id);
+ devices[i]->device_id = NULL;
+ }
+ if (devices[i]->model_name) {
+ free(devices[i]->model_name);
+ devices[i]->model_name = NULL;
+ }
+ if (devices[i]->device_name) {
+ free(devices[i]->device_name);
+ devices[i]->device_name = NULL;
+ }
+ if (devices[i]->platform_ver) {
+ free(devices[i]->platform_ver);
+ devices[i]->platform_ver = NULL;
+ }
+ if (devices[i]->vendor_id) {
+ free(devices[i]->vendor_id);
+ devices[i]->vendor_id = NULL;
+ }
+ if (devices[i]->profile) {
+ free(devices[i]->profile);
+ devices[i]->profile = NULL;
+ }
+ free(devices[i]);
+ devices[i] = NULL;
+ }
}
/* delete group */
}
mdgd_command_t *cmd = (mdgd_command_t *)g_try_malloc0(sizeof(mdgd_command_t));
+ if (NULL == cmd) {
+ return MDGD_ERROR_OUT_OF_MEMORY;
+ }
mdgd_device_t *device = (mdgd_device_t *)g_try_malloc0(sizeof(mdgd_device_t));
+ if (NULL == device) {
+ g_free(cmd);
+ return MDGD_ERROR_OUT_OF_MEMORY;
+ }
int port = selDev->endpoint.port;
int conn_type = selDev->connType;
char *addr = g_strdup(selDev->endpoint.addr);
+ if (NULL == addr) {
+ g_free(cmd);
+ g_free(device);
+ return MDGD_ERROR_OUT_OF_MEMORY;
+ }
char *host_addr = mdgd_addr2host(addr, port, false);
+ if (NULL == device) {
+ g_free(cmd);
+ g_free(device);
+ g_free(addr);
+ return MDGD_ERROR_OUT_OF_MEMORY;
+ }
device->device_id = uuid_str;
device->is_invited = is_invited;
return ret;
}
+static void __clear_mdgd_command_t(mdgd_command_t *cmd)
+{
+ mdgd_check_null_ret("cmd", cmd);
+
+ if (cmd->uuid) {
+ g_free(cmd->uuid);
+ cmd->uuid = NULL;
+ }
+ if (cmd->addr) {
+ g_free(cmd->addr);
+ cmd->addr = NULL;
+ }
+ if (cmd->sender) {
+ g_free(cmd->sender);
+ cmd->sender = NULL;
+ }
+ if (cmd->arg1) {
+ g_free(cmd->arg1);
+ cmd->arg1 = NULL;
+ }
+ if (cmd->arg2) {
+ g_free(cmd->arg2);
+ cmd->arg2 = NULL;
+ }
+ if (cmd->arg3) {
+ g_free(cmd->arg3);
+ cmd->arg3 = NULL;
+ }
+ g_free(cmd);
+ cmd = NULL;
+}
+
+void __clear_mdgd_device_t(mdgd_device_t *device)
+{
+ mdgd_check_null_ret("device", device);
+
+ if (device->device_id) {
+ g_free(device->device_id);
+ device->device_id = NULL;
+ }
+ if (device->model_name) {
+ g_free(device->model_name);
+ device->model_name = NULL;
+ }
+ if (device->platform_ver) {
+ g_free(device->platform_ver);
+ device->platform_ver = NULL;
+ }
+ if (device->profile) {
+ g_free(device->profile);
+ device->profile = NULL;
+ }
+ if (device->device_name) {
+ g_free(device->device_name);
+ device->device_name = NULL;
+ }
+ if (device->vendor_id) {
+ g_free(device->vendor_id);
+ device->vendor_id = NULL;
+ }
+ g_free(device);
+ device = NULL;
+}
+
void __get_device_description(const HeaderOptions &headerOptions,
const OCRepresentation &rep, const int eCode, void *user_data)
{
mdgd_check_null_ret("user_data", user_data);
+ mdgd_command_t *cmd = (mdgd_command_t *)user_data;
+ mdgd_device_t *device = (mdgd_device_t *)cmd->user_data;
+
LOG_BEGIN();
try {
if (eCode == OC_STACK_OK || eCode == OC_STACK_RESOURCE_CREATED ||
eCode == OC_STACK_RESOURCE_CHANGED) {
- mdgd_check_null_ret("user_data", user_data);
- mdgd_command_t *cmd = (mdgd_command_t *)user_data;
- mdgd_device_t *device = (mdgd_device_t *)cmd->user_data;
std::string modelName;
std::string platformVer;
device->type = MDGD_DEVICE_TYPE_REMOTE;
/* Store device information in data structure */
mdgd_group_notify_event(cmd->sender, MDGD_EVENT_DEVICE_FOUND, MDGD_ERROR_NONE, (void *)device);
+
} else {
LOG_ERR("__get_device_description Response error %d", eCode);
}
LOG_ERR("Exception %s in on get", e.what());
}
+ __clear_mdgd_device_t(device);
+ __clear_mdgd_command_t(cmd);
+
LOG_END();
}