service: Create hidden networks with a proper group identifier
authorZhang Zhengguang <zhengguang.zhang@windriver.com>
Mon, 8 Aug 2011 09:42:31 +0000 (05:42 -0400)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 10 Aug 2011 14:17:42 +0000 (16:17 +0200)
hidden_* group identifiers do not match the probe response built ones,
eventually preventing users from being able to reconnect to it.

src/network.c
src/service.c

index b2177db..7690112 100644 (file)
@@ -30,7 +30,6 @@
 
 static GSList *network_list = NULL;
 static GSList *driver_list = NULL;
-static unsigned int hidden_counter = 0;
 
 struct connman_network {
        gint refcount;
@@ -38,7 +37,6 @@ struct connman_network {
        connman_bool_t available;
        connman_bool_t connected;
        connman_bool_t roaming;
-       connman_bool_t hidden;
        connman_uint8_t strength;
        connman_uint16_t frequency;
        char *identifier;
@@ -365,11 +363,7 @@ struct connman_network *connman_network_create(const char *identifier,
 
        network->refcount = 1;
 
-       if (identifier == NULL) {
-               ident = g_strdup_printf("hidden_%d", hidden_counter++);
-               network->hidden = TRUE;
-       } else
-               ident = g_strdup(identifier);
+       ident = g_strdup(identifier);
 
        if (ident == NULL) {
                g_free(network);
@@ -618,9 +612,6 @@ 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;
 }
 
@@ -1063,7 +1054,6 @@ static gboolean set_connected(gpointer user_data)
                struct connman_service *service;
 
                __connman_device_set_network(network->device, NULL);
-               network->hidden = FALSE;
 
                service = __connman_service_lookup_from_network(network);
 
@@ -1211,7 +1201,6 @@ int __connman_network_connect(struct connman_network *network)
                        connman_network_set_associating(network, TRUE);
                else {
                        network->connecting = FALSE;
-                       network->hidden = FALSE;
                }
 
                return err;
index 154ddfa..e46a020 100644 (file)
@@ -4118,7 +4118,8 @@ static struct connman_service *lookup_by_identifier(const char *identifier)
 }
 
 static struct connman_network *create_hidden_wifi(struct connman_device *device,
-               const char *ssid, const char *mode, const char *security)
+               const char *ssid, const char *mode, const char *security,
+               const char *group)
 {
        struct connman_network *network;
        char *name;
@@ -4129,7 +4130,7 @@ static struct connman_network *create_hidden_wifi(struct connman_device *device,
        if (ssid_len < 1)
                return NULL;
 
-       network = connman_network_create(NULL, CONNMAN_NETWORK_TYPE_WIFI);
+       network = connman_network_create(group, CONNMAN_NETWORK_TYPE_WIFI);
        if (network == NULL)
                return NULL;
 
@@ -4264,7 +4265,7 @@ int __connman_service_create_and_connect(DBusMessage *msg)
        if (service != NULL)
                goto done;
 
-       network = create_hidden_wifi(device, ssid, mode, security);
+       network = create_hidden_wifi(device, ssid, mode, security, group);
        if (network != NULL)
                connman_network_set_group(network, group);