From f543a71e7a1de8ca03a628237d6b22cc886b586a Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Fri, 11 May 2012 09:08:23 -0700 Subject: [PATCH] WiFi: only send engine setting when key_id is set For EAP methods that don't need a key, don't set the engine settings or else wpa_supplicant will have an error. Instead, look to see whether key_id is set and use that to indicate when the engine should be set. Additionally, don't require keystore when key_id is not null but is still an empty string. Bug: 6480500 Change-Id: I137de47dfcbbd3da24d693701e249e15d7528228 --- .../android/settings/wifi/WifiConfigController.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index 5f2040ad145..f61572f887f 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -126,7 +126,7 @@ public class WifiConfigController implements TextWatcher, if (config == null) { return false; } - if (config.key_id.value() != null) { + if (!TextUtils.isEmpty(config.key_id.value())) { return true; } String values[] = { config.ca_cert.value(), config.client_cert.value() }; @@ -364,11 +364,12 @@ public class WifiConfigController implements TextWatcher, config.client_cert.setValue((mEapUserCertSpinner.getSelectedItemPosition() == 0) ? "" : KEYSTORE_SPACE + Credentials.USER_CERTIFICATE + (String) mEapUserCertSpinner.getSelectedItem()); - config.engine.setValue(WifiConfiguration.ENGINE_ENABLE); - config.engine_id.setValue(WifiConfiguration.KEYSTORE_ENGINE_ID); - config.key_id.setValue((mEapUserCertSpinner.getSelectedItemPosition() == 0) ? - "" : Credentials.USER_PRIVATE_KEY + + final boolean isEmptyKeyId = (mEapUserCertSpinner.getSelectedItemPosition() == 0); + config.key_id.setValue(isEmptyKeyId ? "" : Credentials.USER_PRIVATE_KEY + (String) mEapUserCertSpinner.getSelectedItem()); + config.engine.setValue(isEmptyKeyId ? WifiConfiguration.ENGINE_DISABLE : + WifiConfiguration.ENGINE_ENABLE); + config.engine_id.setValue(isEmptyKeyId ? "" : WifiConfiguration.KEYSTORE_ENGINE_ID); config.identity.setValue((mEapIdentityView.length() == 0) ? "" : mEapIdentityView.getText().toString()); config.anonymous_identity.setValue((mEapAnonymousView.length() == 0) ? "" :