struct wifi_data {
GSList *list;
gchar *identifier;
+ gboolean connected;
};
static int network_probe(struct connman_element *element)
if (element->parent != NULL) {
struct wifi_data *data = connman_element_get_data(element->parent);
+ if (data->connected == TRUE)
+ return -EBUSY;
+
if (data != NULL) {
g_free(data->identifier);
data->identifier = g_strdup(identifier);
if (state == STATE_COMPLETED) {
struct connman_element *dhcp;
+ data->connected = TRUE;
+
dhcp = connman_element_create(NULL);
dhcp->type = CONNMAN_ELEMENT_TYPE_DHCP;
dhcp->index = element->index;
connman_element_register(dhcp, element);
- }
+ } else if (state == STATE_DISCONNECTED || state == STATE_INACTIVE)
+ data->connected = FALSE;
}
static void scan_result(struct connman_element *parent,
if (data == NULL)
return -ENOMEM;
+ data->connected = FALSE;
+
connman_element_set_data(element, data);
return 0;