summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>2012-04-24 15:10:00 (GMT)
committerMarcel Holtmann <marcel@holtmann.org>2012-04-24 15:09:50 (GMT)
commit604a5272c1be29048377856e4f655af354942c55 (patch)
tree12acdd10dba6f089e5a68620e9def6bcfa2862bc
parent1c249af7946667f24cd2b995cc13149b77dd62df (diff)
downloadconnman-604a5272c1be29048377856e4f655af354942c55.zip
connman-604a5272c1be29048377856e4f655af354942c55.tar.gz
connman-604a5272c1be29048377856e4f655af354942c55.tar.bz2
wifi: Fixing autoscan device unref issues
- stop_autoscan() should unref the device only when relevant, i.e. when interval and/or timeout have been set. - autoscan_scan_callback() should unref the device since it has been referenced in throw_wifi_scan()
-rw-r--r--plugins/wifi.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/plugins/wifi.c b/plugins/wifi.c
index 28b3563..9ce380b 100644
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -214,8 +214,10 @@ static void stop_autoscan(struct connman_device *device)
autoscan = wifi->autoscan;
- if (autoscan->timeout > 0)
- g_source_remove(autoscan->timeout);
+ if (autoscan->timeout == 0 && autoscan->interval == 0)
+ return;
+
+ g_source_remove(autoscan->timeout);
autoscan->timeout = 0;
autoscan->interval = 0;
@@ -281,6 +283,7 @@ static void autoscan_scan_callback(int result,
DBG("");
connman_device_set_scanning(device, FALSE);
+ connman_device_unref(device);
}
static gboolean autoscan_timeout(gpointer data)