return network->available;
}
+static gboolean set_connected(gpointer user_data)
+{
+ struct connman_network *network = user_data;
+
+ if (network->connected == TRUE) {
+ struct connman_element *element;
+ enum connman_element_type type = CONNMAN_ELEMENT_TYPE_UNKNOWN;
+
+ switch (network->protocol) {
+ case CONNMAN_NETWORK_PROTOCOL_UNKNOWN:
+ return 0;
+ case CONNMAN_NETWORK_PROTOCOL_IP:
+ type = CONNMAN_ELEMENT_TYPE_DHCP;
+ break;
+ case CONNMAN_NETWORK_PROTOCOL_PPP:
+ type = CONNMAN_ELEMENT_TYPE_PPP;
+ break;
+ }
+
+ __connman_device_increase_connections(network->device);
+
+ __connman_device_set_network(network->device, network);
+
+ connman_device_set_disconnected(network->device, FALSE);
+
+ element = connman_element_create(NULL);
+ if (element != NULL) {
+ element->type = type;
+ element->index = network->element.index;
+
+ if (connman_element_register(element,
+ &network->element) < 0)
+ connman_element_unref(element);
+ }
+ } else {
+ connman_element_unregister_children(&network->element);
+
+ __connman_device_set_network(network->device, NULL);
+
+ __connman_device_decrease_connections(network->device);
+ }
+
+ return FALSE;
+}
+
/**
* connman_network_set_connected:
* @network: network structure
network->connected = connected;
if (network->registered == FALSE)
- goto connected;
+ g_idle_add(set_connected, network);
signal = dbus_message_new_signal(network->element.path,
CONNMAN_NETWORK_INTERFACE, "PropertyChanged");
g_dbus_send_message(connection, signal);
-connected:
- if (connected == TRUE) {
- struct connman_element *element;
- enum connman_element_type type = CONNMAN_ELEMENT_TYPE_UNKNOWN;
-
- switch (network->protocol) {
- case CONNMAN_NETWORK_PROTOCOL_UNKNOWN:
- return 0;
- case CONNMAN_NETWORK_PROTOCOL_IP:
- type = CONNMAN_ELEMENT_TYPE_DHCP;
- break;
- case CONNMAN_NETWORK_PROTOCOL_PPP:
- type = CONNMAN_ELEMENT_TYPE_PPP;
- break;
- }
-
- __connman_device_increase_connections(network->device);
-
- __connman_device_set_network(network->device, network);
-
- connman_device_set_disconnected(network->device, FALSE);
-
- element = connman_element_create(NULL);
- if (element != NULL) {
- element->type = type;
- element->index = network->element.index;
-
- if (connman_element_register(element,
- &network->element) < 0)
- connman_element_unref(element);
- }
- } else {
- connman_element_unregister_children(&network->element);
-
- __connman_device_set_network(network->device, NULL);
-
- __connman_device_decrease_connections(network->device);
- }
+ set_connected(network);
return 0;
}