summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-01-05 05:38:28 +0100
committerMarcel Holtmann <marcel@holtmann.org>2009-01-05 05:38:28 +0100
commit19262ea6023ca56de20d5b69950bed1146437849 (patch)
treeaf0e7ea4de220bd0391178a98af8995aa0b2db35 /plugins
parent186b6fa635e755c824756db8e483eb6c92cb3167 (diff)
downloadconnman-19262ea6023ca56de20d5b69950bed1146437849.tar.gz
connman-19262ea6023ca56de20d5b69950bed1146437849.tar.bz2
connman-19262ea6023ca56de20d5b69950bed1146437849.zip
Handle scanning status and connecting
Diffstat (limited to 'plugins')
-rw-r--r--plugins/supplicant.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/plugins/supplicant.c b/plugins/supplicant.c
index 1cf085ff..bc83be9f 100644
--- a/plugins/supplicant.c
+++ b/plugins/supplicant.c
@@ -82,6 +82,7 @@ struct supplicant_task {
char *netpath;
gboolean created;
enum supplicant_state state;
+ gboolean doscan;
GSList *scan_results;
};
@@ -906,7 +907,8 @@ static int get_properties(struct supplicant_task *task)
path = g_slist_nth_data(task->scan_results, 0);
if (path == NULL) {
- connman_device_set_scanning(task->device, FALSE);
+ if (task->doscan == FALSE)
+ connman_device_set_scanning(task->device, FALSE);
return 0;
}
@@ -946,7 +948,8 @@ static void scan_results_reply(DBusPendingCall *call, void *user_data)
reply = dbus_pending_call_steal_reply(call);
if (reply == NULL) {
- connman_device_set_scanning(task->device, FALSE);
+ if (task->doscan == FALSE)
+ connman_device_set_scanning(task->device, FALSE);
return;
}
@@ -961,7 +964,8 @@ static void scan_results_reply(DBusPendingCall *call, void *user_data)
dbus_error_free(&error);
} else
connman_error("Wrong arguments for scan result");
- connman_device_set_scanning(task->device, FALSE);
+ if (task->doscan == FALSE)
+ connman_device_set_scanning(task->device, FALSE);
goto done;
}
@@ -1047,8 +1051,13 @@ static void state_change(struct supplicant_task *task, DBusMessage *msg)
else if (g_str_equal(state, "DISCONNECTED") == TRUE)
task->state = STATE_DISCONNECTED;
- if (task->state == STATE_SCANNING)
+ if (task->state == STATE_SCANNING) {
+ task->doscan = TRUE;
connman_device_set_scanning(task->device, TRUE);
+ } else if (task->state == STATE_INACTIVE) {
+ task->doscan = FALSE;
+ connman_device_set_scanning(task->device, FALSE);
+ }
if (task->network == NULL)
return;