---
 src/network.c |   10 ++++++++--
 src/service.c |   19 ++++++++++++++-----
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/network.c b/src/network.c
index ed306e9..5ae5a12 100644
--- a/src/network.c
+++ b/src/network.c
@@ -1409,6 +1409,7 @@ int connman_network_connect_hidden(struct connman_network 
*network,
                                char *identity, char* passphrase)
 {
        struct connman_service *service;
+       int err;
 
        DBG("");
 
@@ -1420,9 +1421,14 @@ int connman_network_connect_hidden(struct 
connman_network *network,
                __connman_service_set_agent_identity(service, identity);
 
        if (passphrase != NULL)
-               __connman_service_add_passphrase(service, passphrase);
+               err = __connman_service_add_passphrase(service, passphrase);
 
-       return __connman_service_connect(service);
+       if (err == -ENOKEY) {
+               __connman_service_indicate_error(service,
+                                       CONNMAN_SERVICE_ERROR_INVALID_KEY);
+               return err;
+       } else
+               return __connman_service_connect(service);
 }
 
 /**
diff --git a/src/service.c b/src/service.c
index 562e3c9..3935e9a 100644
--- a/src/service.c
+++ b/src/service.c
@@ -4265,6 +4265,7 @@ static void request_input_cb (struct connman_service 
*service,
                        void *user_data)
 {
        struct connman_device *device;
+       int err = 0;
 
        DBG ("RequestInput return, %p", service);
 
@@ -4286,13 +4287,21 @@ static void request_input_cb (struct connman_service 
*service,
                __connman_service_set_agent_identity(service, identity);
 
        if (passphrase != NULL)
-               __connman_service_add_passphrase(service, passphrase);
+               err = __connman_service_add_passphrase(service, passphrase);
 
-       __connman_service_connect(service);
+       if (err >= 0) {
+               __connman_service_connect(service);
 
-       /* Never cache agent provided credentials */
-       __connman_service_set_agent_identity(service, NULL);
-       __connman_service_set_agent_passphrase(service, NULL);
+               /* Never cache agent provided credentials */
+               __connman_service_set_agent_identity(service, NULL);
+               __connman_service_set_agent_passphrase(service, NULL);
+       } else if (err == -ENOKEY) {
+               __connman_service_indicate_error(service,
+                                       CONNMAN_SERVICE_ERROR_INVALID_KEY);
+               __connman_agent_report_error(service,
+                                       error2string(service->error),
+                                       report_error_cb, NULL);
+       }
 }
 
 static void downgrade_connected_services(void)
-- 
1.7.5.4

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to