summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-07-23 09:24:30 +0200
committerMarcel Holtmann <marcel@holtmann.org>2009-07-23 09:24:30 +0200
commit65dc6a1f80f72c63df58e0541178c8442132c122 (patch)
tree3465c8f39e830c7c4048320e4238c517a03a1b5f /src
parentd82622c6ebe810c766a2e731d84130363aa5c4ab (diff)
downloadconnman-65dc6a1f80f72c63df58e0541178c8442132c122.tar.gz
connman-65dc6a1f80f72c63df58e0541178c8442132c122.tar.bz2
connman-65dc6a1f80f72c63df58e0541178c8442132c122.zip
Fix rearming the scan trigger if a device got disabled
Diffstat (limited to 'src')
-rw-r--r--src/device.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/device.c b/src/device.c
index 48aca8b9..0e949990 100644
--- a/src/device.c
+++ b/src/device.c
@@ -86,12 +86,17 @@ static gboolean device_scan_trigger(gpointer user_data)
return TRUE;
}
-static void reset_scan_trigger(struct connman_device *device)
+static void clear_scan_trigger(struct connman_device *device)
{
if (device->scan_timeout > 0) {
g_source_remove(device->scan_timeout);
device->scan_timeout = 0;
}
+}
+
+static void reset_scan_trigger(struct connman_device *device)
+{
+ clear_scan_trigger(device);
if (device->scan_interval > 0) {
guint interval = device->scan_interval;
@@ -312,6 +317,8 @@ static int set_powered(struct connman_device *device, connman_bool_t powered)
} else
err = -EINVAL;
} else {
+ clear_scan_trigger(device);
+
g_hash_table_remove_all(device->networks);
set_carrier(device, FALSE);
@@ -1304,6 +1311,8 @@ int __connman_device_disable(struct connman_device *device)
if (device->powered == FALSE)
return -ENOLINK;
+ clear_scan_trigger(device);
+
g_hash_table_remove_all(device->networks);
err = device->driver->disable(device);