From 6a4734af1afd44156c5d4862987a6b8fc5ebd3a8 Mon Sep 17 00:00:00 2001 From: Patrik Flykt Date: Fri, 4 Feb 2011 15:14:22 +0200 Subject: [PATCH] wifi: Check invalid key/passphrase in gsupplicant connect callback Use network struct as connect callback user data and set network error to CONNMAN_NETWORK_ERROR_INVALID_KEY if gsupplicant indicates key/passphrase error. For other errors < 0 set network error to CONNMAN_NETWORK_ERROR_CONFIGURE_FAIL. --- plugins/wifi.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/wifi.c b/plugins/wifi.c index c4089c0..78da6ac 100644 --- a/plugins/wifi.c +++ b/plugins/wifi.c @@ -329,7 +329,17 @@ static void network_remove(struct connman_network *network) static void connect_callback(int result, GSupplicantInterface *interface, void *user_data) { - connman_error("%s", __func__); + struct connman_network *network = user_data; + + DBG("network %p result %d", network, result); + + if (result == -ENOKEY) { + connman_network_set_error(network, + CONNMAN_NETWORK_ERROR_INVALID_KEY); + } else if (result < 0) { + connman_network_set_error(network, + CONNMAN_NETWORK_ERROR_CONFIGURE_FAIL); + } } static GSupplicantSecurity network_security(const char *security) @@ -428,7 +438,7 @@ static int network_connect(struct connman_network *network) wifi->network = connman_network_ref(network); return g_supplicant_interface_connect(interface, ssid, - connect_callback, NULL); + connect_callback, network); } return -EINPROGRESS; -- 2.7.4