struct connman_network *network = NULL;
GHashTableIter iter;
gpointer key, value;
+ const char *name;
unsigned int count = 0;
DBG("device %p", device);
g_hash_table_iter_init(&iter, device->networks);
while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
- connman_uint8_t old_priority, new_priority;
connman_uint8_t old_strength, new_strength;
- const char *name;
count++;
}
}
- if (connman_network_get_remember(value) == FALSE)
- continue;
-
if (network == NULL) {
network = value;
continue;
}
- old_priority = connman_network_get_uint8(network,
- CONNMAN_PROPERTY_ID_PRIORITY);
- new_priority = connman_network_get_uint8(value,
- CONNMAN_PROPERTY_ID_PRIORITY);
-
- if (new_priority != old_priority) {
- if (new_priority > old_priority)
- network = value;
- continue;
- }
-
old_strength = connman_network_get_uint8(network,
CONNMAN_PROPERTY_ID_STRENGTH);
new_strength = connman_network_get_uint8(value,
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)
if (connman_network_get_connected(network) == TRUE)
return FALSE;
- if (connman_network_get_remember(network) == TRUE)
- return FALSE;
-
if (connman_network_get_available(network) == TRUE)
return FALSE;
{
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;
+ }
}
/**