summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xplugins/wifi.c5
-rwxr-xr-xsrc/service.c38
2 files changed, 36 insertions, 7 deletions
diff --git a/plugins/wifi.c b/plugins/wifi.c
index 1739e58a..72eb64f7 100755
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -2976,12 +2976,7 @@ static void network_added(GSupplicantNetwork *supplicant_network)
#endif
if (wifi->hidden && ssid) {
-#if defined TIZEN_EXT
- if (network_security(wifi->hidden->security) ==
- network_security(security) &&
-#else
if (!g_strcmp0(wifi->hidden->security, security) &&
-#endif
wifi->hidden->ssid_len == ssid_len &&
!memcmp(wifi->hidden->ssid, ssid, ssid_len)) {
connman_network_connect_hidden(network,
diff --git a/src/service.c b/src/service.c
index bd0c1ff6..1eae3807 100755
--- a/src/service.c
+++ b/src/service.c
@@ -4085,10 +4085,8 @@ static void set_error(struct connman_service *service,
if (!service->path)
return;
-#if !defined TIZEN_EXT
if (!allow_property_changed(service))
return;
-#endif
str = error2string(service->error);
@@ -6004,6 +6002,34 @@ static int check_wpspin(struct connman_service *service, const char *wpspin)
return 0;
}
+#if defined TIZEN_EXT
+static int __connman_service_connect_hidden(struct connman_service *service,
+ const char *name, int name_len,
+ const char *identity, const char *passphrase, void *user_data)
+{
+ GList *list;
+
+ for (list = service_list; list; list = list->next) {
+ struct connman_service *target = list->data;
+ const char *target_ssid = NULL;
+ unsigned int target_ssid_len = 0;
+
+ if (service->network != NULL &&
+ service->security == target->security) {
+ target_ssid = connman_network_get_blob(service->network,
+ "WiFi.SSID", &target_ssid_len);
+ if (target_ssid_len == name_len &&
+ memcmp(target_ssid, name, name_len) == 0) {
+ return connman_network_connect_hidden(service->network,
+ (char *)identity, (char *)passphrase, user_data);
+ }
+ }
+ }
+
+ return -ENOENT;
+}
+#endif
+
static void request_input_cb(struct connman_service *service,
bool values_received,
const char *name, int name_len,
@@ -6036,6 +6062,14 @@ static void request_input_cb(struct connman_service *service,
}
if (service->hidden && name_len > 0 && name_len <= 32) {
+#if defined TIZEN_EXT
+ /* TIZEN already has Wi-Fi hidden scan before this hidden connection */
+ err = __connman_service_connect_hidden(service, name, name_len,
+ identity, passphrase, user_data);
+ if (err == 0 || err == -EALREADY || err == -EINPROGRESS)
+ return;
+#endif
+
device = connman_network_get_device(service->network);
security = connman_network_get_string(service->network,
"WiFi.Security");