From: Marcel Holtmann Date: Fri, 17 Jul 2009 11:48:59 +0000 (+0200) Subject: Protect hidden and active networks during scanning X-Git-Tag: 0.26~18 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a797eb326cdbce0935e321470b452563797bb0e7;p=platform%2Fupstream%2Fconnman.git Protect hidden and active networks during scanning --- diff --git a/src/network.c b/src/network.c index 5f3ae9c..7277e21 100644 --- a/src/network.c +++ b/src/network.c @@ -37,6 +37,7 @@ struct connman_network { connman_bool_t secondary; connman_bool_t available; connman_bool_t connected; + connman_bool_t hidden; connman_uint8_t strength; connman_uint16_t frequency; char *identifier; @@ -461,7 +462,12 @@ struct connman_network *connman_network_create(const char *identifier, __connman_element_initialize(&network->element); //temp = connman_dbus_encode_string(identifier); - temp = g_strdup(identifier); + if (identifier == NULL) { + temp = g_strdup("hidden"); + network->hidden = TRUE; + } else + temp = g_strdup(identifier); + if (temp == NULL) { g_free(network); return NULL; @@ -481,7 +487,7 @@ struct connman_network *connman_network_create(const char *identifier, network->type = type; network->secondary = FALSE; - network->identifier = g_strdup(identifier); + network->identifier = g_strdup(temp); network->ipconfig = connman_ipconfig_create(); if (network->ipconfig == NULL) { @@ -702,6 +708,9 @@ int connman_network_set_available(struct connman_network *network, */ connman_bool_t connman_network_get_available(struct connman_network *network) { + if (network->hidden == TRUE) + return TRUE; + return network->available; } @@ -777,6 +786,7 @@ static gboolean set_connected(gpointer user_data) connman_element_unregister_children(&network->element); __connman_device_set_network(network->device, NULL); + network->hidden = FALSE; __connman_device_decrease_connections(network->device); @@ -899,6 +909,8 @@ int __connman_network_connect(struct connman_network *network) if (err < 0) { if (err == -EINPROGRESS) connman_network_set_associating(network, TRUE); + else + network->hidden = FALSE; return err; } diff --git a/src/service.c b/src/service.c index 74a39fc..33d942d 100644 --- a/src/service.c +++ b/src/service.c @@ -1178,8 +1178,7 @@ static struct connman_network *create_hidden_wifi(struct connman_device *device, if (ssid_len < 1) return NULL; - network = connman_network_create("000000000000", - CONNMAN_NETWORK_TYPE_WIFI); + network = connman_network_create(NULL, CONNMAN_NETWORK_TYPE_WIFI); if (network == NULL) return NULL;