diff options
-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); |