diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-07-23 09:24:30 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-07-23 09:24:30 +0200 |
commit | 65dc6a1f80f72c63df58e0541178c8442132c122 (patch) | |
tree | 3465c8f39e830c7c4048320e4238c517a03a1b5f /src | |
parent | d82622c6ebe810c766a2e731d84130363aa5c4ab (diff) | |
download | connman-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.c | 11 |
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); |