43 lines
1.1 KiB
Diff
43 lines
1.1 KiB
Diff
Schedule delayed scan when being disconnected from an AP
|
|
|
|
When being disconnected from an AP, a delayed scan is scheduled to make
|
|
sure the AP is still there. wpa_supplicant removes a BSS from its bss list
|
|
when it disappears from the scan results twice in a row.
|
|
|
|
Author: Samuel Ortiz <sameo@linux.intel.com>
|
|
Ported by Dongxiao Xu <dongxiao.xu@intel.com>
|
|
|
|
diff -ruN connman-0.56-orig/plugins/supplicant.c connman-0.56/plugins/supplicant.c
|
|
--- connman-0.56-orig/plugins/supplicant.c 2010-09-25 15:08:21.242927383 +0800
|
|
+++ connman-0.56/plugins/supplicant.c 2010-09-25 15:12:46.346136858 +0800
|
|
@@ -2184,6 +2184,15 @@
|
|
scanning == TRUE ? "started" : "finished");
|
|
}
|
|
|
|
+static gboolean delayed_scan(gpointer user_data)
|
|
+{
|
|
+ struct supplicant_task *task = user_data;
|
|
+
|
|
+ supplicant_scan(task->device);
|
|
+
|
|
+ return FALSE;
|
|
+}
|
|
+
|
|
static void state_change(struct supplicant_task *task, DBusMessage *msg)
|
|
{
|
|
DBusError error;
|
|
@@ -2277,7 +2286,13 @@
|
|
task_connect(task);
|
|
} else
|
|
task->network = NULL;
|
|
+ } else {
|
|
+ if (task->state == WPA_DISCONNECTED)
|
|
+ g_timeout_add_seconds(10, delayed_scan, task);
|
|
+
|
|
+ remove_network(task);
|
|
}
|
|
+
|
|
break;
|
|
|
|
default:
|