network: Keep device->connections counter in sync
authorMohamed Abbas <mabbas@linux.intel.com>
Thu, 9 Dec 2010 00:37:12 +0000 (16:37 -0800)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 13 Dec 2010 12:11:34 +0000 (13:11 +0100)
Calling __connman_device_decrease_connections from set_connnected
can decrease the connections counter twice on disconnect.

src/device.c
src/network.c

index b8110c4..f2b8cf2 100644 (file)
@@ -250,6 +250,8 @@ int __connman_device_disable(struct connman_device *device)
                return err;
        }
 
+       device->connections = 0;
+
        device->powered_pending = FALSE;
        device->powered = FALSE;
 
index 0e22522..49ffa73 100644 (file)
@@ -770,8 +770,6 @@ static gboolean set_connected(gpointer user_data)
                __connman_device_set_network(network->device, NULL);
                network->hidden = FALSE;
 
-               __connman_device_decrease_connections(network->device);
-
                service = __connman_service_lookup_from_network(network);
 
                __connman_service_indicate_state(service,
@@ -807,6 +805,9 @@ int connman_network_set_connected(struct connman_network *network,
        if (network->connected == connected)
                return -EALREADY;
 
+       if (connected == FALSE)
+               __connman_device_decrease_connections(network->device);
+
        network->connected = connected;
 
        set_connected(network);