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