summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@nokia.com>2011-02-04 15:14:22 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2011-02-08 01:02:44 +0100
commit6a4734af1afd44156c5d4862987a6b8fc5ebd3a8 (patch)
tree02227273d251f5ecaaa64b7e4ab2ebd60a10a5bb
parentd844a8420a3594b12a94b8fe64101152f173bee9 (diff)
downloadconnman-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.c14
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;