---
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