---
 src/service.c |   22 +++++++++++++++++-----
 1 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/service.c b/src/service.c
index d0590dd..1921acc 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2316,9 +2316,12 @@ static void request_input_cb (struct connman_service 
*service,
 {
        DBG ("RequestInput return, %p", service);
 
-       if (passphrase == NULL)
+       if (passphrase == NULL && service->wps == FALSE)
                return;
-       __connman_service_set_passphrase(service, passphrase);
+
+       if (passphrase != NULL)
+               __connman_service_set_passphrase(service, passphrase);
+
        __connman_service_connect(service);
 }
 
@@ -3273,7 +3276,8 @@ static connman_bool_t prepare_network(struct 
connman_service *service)
                                                        &ssid_len) == NULL)
                        return FALSE;
 
-               connman_network_set_string(service->network,
+               if (service->passphrase != NULL)
+                       connman_network_set_string(service->network,
                                "WiFi.Passphrase", service->passphrase);
                break;
        case CONNMAN_NETWORK_TYPE_ETHERNET:
@@ -3365,8 +3369,16 @@ int __connman_service_connect(struct connman_service 
*service)
                case CONNMAN_SERVICE_SECURITY_PSK:
                case CONNMAN_SERVICE_SECURITY_WPA:
                case CONNMAN_SERVICE_SECURITY_RSN:
-                       if (service->passphrase == NULL)
-                               return -ENOKEY;
+                       if (service->passphrase == NULL) {
+                               if (service->network == NULL)
+                                       return -EOPNOTSUPP;
+
+                               if (service->wps == FALSE ||
+                                       connman_network_get_bool(
+                                                       service->network,
+                                                       "WiFi.UseWPS") == FALSE)
+                                       return -ENOKEY;
+                       }
                        break;
                case CONNMAN_SERVICE_SECURITY_8021X:
                        break;
-- 
1.7.2.3

_______________________________________________
connman mailing list
connman@connman.net
http://lists.connman.net/listinfo/connman

Reply via email to