diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-01-05 05:38:28 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-01-05 05:38:28 +0100 |
commit | 19262ea6023ca56de20d5b69950bed1146437849 (patch) | |
tree | af0e7ea4de220bd0391178a98af8995aa0b2db35 /plugins | |
parent | 186b6fa635e755c824756db8e483eb6c92cb3167 (diff) | |
download | connman-19262ea6023ca56de20d5b69950bed1146437849.tar.gz connman-19262ea6023ca56de20d5b69950bed1146437849.tar.bz2 connman-19262ea6023ca56de20d5b69950bed1146437849.zip |
Handle scanning status and connecting
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/supplicant.c | 17 |
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; |