element->type = CONNMAN_ELEMENT_TYPE_IPV4;
element->index = task->ifindex;
connman_element_update(task->element);
- connman_element_register(element, task->element);
+ if (connman_element_register(element, task->element) < 0)
+ connman_element_unref(element);
} else if (g_ascii_strcasecmp(text, "RENEW") == 0 ||
g_ascii_strcasecmp(text, "REBIND") == 0) {
connman_element_update(task->element);
netdev->subtype = CONNMAN_ELEMENT_SUBTYPE_NETWORK;
netdev->index = element->index;
- connman_element_register(netdev, element);
+ if (connman_element_register(netdev, element) < 0)
+ connman_element_unref(netdev);
}
} else {
DBG("carrier off");
connection->type = CONNMAN_ELEMENT_TYPE_CONNECTION;
connection->index = element->index;
- connman_element_register(connection, element);
+ if (connman_element_register(connection, element) < 0)
+ connman_element_unref(connection);
return 0;
}
else
element->subtype = CONNMAN_ELEMENT_SUBTYPE_UNKNOWN;
- connman_element_register(element, parent);
+ if (connman_element_register(element, parent) < 0)
+ connman_element_unref(element);
}
static int netdev_probe(struct connman_element *element)
device->name = name;
device->devname = devname;
- connman_element_register(device, NULL);
+ if (connman_element_register(device, NULL) < 0) {
+ connman_element_unref(device);
+ return;
+ }
+
device_list = g_slist_append(device_list, device);
}
dhcp->type = CONNMAN_ELEMENT_TYPE_DHCP;
dhcp->index = element->index;
- connman_element_register(dhcp, element);
+ if (connman_element_register(dhcp, element) < 0)
+ connman_element_unref(dhcp);
} else if (state == STATE_INACTIVE || state == STATE_DISCONNECTED) {
data->connected = FALSE;
connman_element_set_enabled(element, FALSE);
DBG("%s (%s) strength %d", network->identifier,
element->wifi.security, element->strength);
- connman_element_register(element, device);
+ if (connman_element_register(element, device) < 0) {
+ connman_element_unref(element);
+ goto done;
+ }
} else {
data->pending = g_slist_remove(data->pending, element);
element->available = TRUE;
+done:
g_free(temp);
}
device->name = name;
device->devname = devname;
- connman_element_register(device, NULL);
+ if (connman_element_register(device, NULL) < 0) {
+ connman_element_unregister(device);
+ return;
+ }
+
device_list = g_slist_append(device_list, device);
}