From da2d28b38c3b6d521652c55f0451feccd9d02a7f Mon Sep 17 00:00:00 2001 From: Martin Xu Date: Thu, 16 Jul 2009 07:22:36 +0800 Subject: [PATCH] Fix stalled configuration issue with supplicant --- plugins/supplicant.c | 14 ++++++++++++++ src/device.c | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/supplicant.c b/plugins/supplicant.c index b964ae7..66a7580 100644 --- a/plugins/supplicant.c +++ b/plugins/supplicant.c @@ -1617,6 +1617,20 @@ static void state_change(struct supplicant_task *task, DBusMessage *msg) connman_network_set_associating(task->network, TRUE); break; + case WPA_INACTIVE: + if (task->disconnecting == TRUE) { + connman_network_set_connected(task->network, FALSE); + connman_network_unref(task->network); + task->disconnecting = FALSE; + + if (task->pending_network != NULL) { + task->network = task->pending_network; + task->pending_network = NULL; + task_connect(task); + } + } + break; + default: connman_network_set_associating(task->network, FALSE); break; diff --git a/src/device.c b/src/device.c index b3038ad..3ee1f61 100644 --- a/src/device.c +++ b/src/device.c @@ -1432,7 +1432,8 @@ int __connman_device_disconnect(struct connman_device *device) while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { struct connman_network *network = value; - if (connman_network_get_connected(network) == TRUE) + if (connman_network_get_connected(network) == TRUE || + connman_network_get_associating(network) == TRUE) __connman_network_disconnect(network); } -- 2.7.4