Calling __connman_device_decrease_connections from set_connnected
can lead decrease the connections counter twice on disconnect.
---
 src/device.c  |    2 ++
 src/network.c |    5 +++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/device.c b/src/device.c
index 667fed6..50f6723 100644
--- a/src/device.c
+++ b/src/device.c
@@ -250,6 +250,8 @@ int __connman_device_disable(struct connman_device *device)
                return err;
        }
 
+       device->connections = 0;
+
        device->powered_pending = FALSE;
        device->powered = FALSE;
 
diff --git a/src/network.c b/src/network.c
index 0e22522..49ffa73 100644
--- a/src/network.c
+++ b/src/network.c
@@ -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);
-- 
1.7.2.3

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to