struct connman_network *network = NULL;
GHashTableIter iter;
gpointer key, value;
+ const char *name;
unsigned int count = 0;
DBG("device %p", device);
while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
connman_uint8_t old_strength, new_strength;
- const char *name;
count++;
if (network != NULL) {
int err;
- err = connman_network_connect(network);
- if (err == 0 || err == -EINPROGRESS)
- return;
+ name = connman_network_get_string(value,
+ CONNMAN_PROPERTY_ID_NAME);
+ if (name != NULL) {
+ err = __connman_network_connect(network);
+ if (err == 0 || err == -EINPROGRESS)
+ return;
+ }
}
if (count > 0)
{
const char *name;
+ if (device->network == network)
+ return;
+
+ if (device->network != NULL)
+ connman_network_unref(device->network);
+
if (network != NULL) {
name = connman_network_get_string(network,
CONNMAN_PROPERTY_ID_NAME);
+ g_free(device->last_network);
device->last_network = g_strdup(name);
- }
- device->network = network;
+ device->network = connman_network_ref(network);
+ } else {
+ g_free(device->last_network);
+ device->last_network = NULL;
+
+ device->network = NULL;
+ }
}
/**