diff options
author | Patrik Flykt <patrik.flykt@nokia.com> | 2011-02-04 15:14:22 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-02-08 01:02:44 +0100 |
commit | 6a4734af1afd44156c5d4862987a6b8fc5ebd3a8 (patch) | |
tree | 02227273d251f5ecaaa64b7e4ab2ebd60a10a5bb | |
parent | d844a8420a3594b12a94b8fe64101152f173bee9 (diff) | |
download | connman-6a4734af1afd44156c5d4862987a6b8fc5ebd3a8.tar.gz connman-6a4734af1afd44156c5d4862987a6b8fc5ebd3a8.tar.bz2 connman-6a4734af1afd44156c5d4862987a6b8fc5ebd3a8.zip |
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.
-rw-r--r-- | plugins/wifi.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/plugins/wifi.c b/plugins/wifi.c index c4089c06..78da6ac4 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; |