summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMohamed Abbas <mabbas@linux.intel.com>2010-12-08 16:37:12 -0800
committerSamuel Ortiz <sameo@linux.intel.com>2010-12-13 13:11:34 +0100
commit0dafb0f80440a5d24b43b449bdecb5cd79b06242 (patch)
tree76221e08f7aed931e234e0ac7b8dd042c57bee0d /src
parent272115f5e3b52bf136303d81d6b3728b0261e402 (diff)
downloadconnman-0dafb0f80440a5d24b43b449bdecb5cd79b06242.tar.gz
connman-0dafb0f80440a5d24b43b449bdecb5cd79b06242.tar.bz2
connman-0dafb0f80440a5d24b43b449bdecb5cd79b06242.zip
network: Keep device->connections counter in sync
Calling __connman_device_decrease_connections from set_connnected can decrease the connections counter twice on disconnect.
Diffstat (limited to 'src')
-rw-r--r--src/device.c2
-rw-r--r--src/network.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/src/device.c b/src/device.c
index b8110c47..f2b8cf29 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 0e225225..49ffa733 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);