X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fdevice.c;h=cd9105d0775953445c3455e0115f57786589bcf9;hb=19a74cb20534881988ed1009a761c999997f2ee4;hp=ff519434e254f4621e9481fe68b4811952323a04;hpb=2f91f80f19788f0e1734c586dbadb399d03940b5;p=connman diff --git a/src/device.c b/src/device.c index ff51943..cd9105d 100644 --- a/src/device.c +++ b/src/device.c @@ -1361,6 +1361,7 @@ static void connect_known_network(struct connman_device *device) struct connman_network *network = NULL; GHashTableIter iter; gpointer key, value; + const char *name; unsigned int count = 0; DBG("device %p", device); @@ -1369,7 +1370,6 @@ static void connect_known_network(struct connman_device *device) while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { connman_uint8_t old_strength, new_strength; - const char *name; count++; @@ -1402,9 +1402,13 @@ static void connect_known_network(struct connman_device *device) 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) @@ -1710,13 +1714,25 @@ void __connman_device_set_network(struct connman_device *device, { 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; + } } /**