From: Patrik Flykt <[email protected]>
Change password query to use RequestInput method call instead of
RequestPassphrase. The supplied passphrase_cb_t function sets the password
returned via Agent API and tries to reconnect to the service.
A connman_service_set_passphrase helper function has been added by factoring
out the password setting code from set_property.
---
src/service.c | 48 ++++++++++++++++++++++++++++++++++--------------
1 files changed, 34 insertions(+), 14 deletions(-)
diff --git a/src/service.c b/src/service.c
index b22edb1..ca694f1 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1377,6 +1377,22 @@ const char *connman_service_get_proxy_autoconfig(struct
connman_service *service
return __connman_ipconfig_get_proxy_autoconfig(service->ipconfig);
}
+static void connman_service_set_passphrase(struct connman_service *service,
+ const char* passphrase)
+{
+ g_free(service->passphrase);
+ service->passphrase = g_strdup(passphrase);
+
+ passphrase_changed(service);
+
+ if (service->network != NULL)
+ connman_network_set_string(service->network,
+ "WiFi.Passphrase",
+ service->passphrase);
+
+ __connman_storage_save_service(service);
+}
+
static DBusMessage *get_properties(DBusConnection *conn,
DBusMessage *msg, void *user_data)
{
@@ -1448,16 +1464,7 @@ static DBusMessage *set_property(DBusConnection *conn,
dbus_message_iter_get_basic(&value, &passphrase);
- g_free(service->passphrase);
- service->passphrase = g_strdup(passphrase);
-
- passphrase_changed(service);
-
- if (service->network != NULL)
- connman_network_set_string(service->network,
- "WiFi.Passphrase", service->passphrase);
-
- __connman_storage_save_service(service);
+ connman_service_set_passphrase(service, passphrase);
} else if (g_str_equal(name, "APN") == TRUE) {
const char *apn;
@@ -1855,6 +1862,17 @@ static connman_bool_t get_reconnect_state(struct
connman_service *service)
return __connman_device_get_reconnect(device);
}
+static void request_input_cb (struct connman_service *service,
+ const char *passphrase, void *user_data)
+{
+ DBG ("RequestInput return, %p", service);
+
+ if (passphrase == NULL)
+ return;
+ connman_service_set_passphrase(service, passphrase);
+ __connman_service_connect(service);
+}
+
struct connman_service *
__connman_service_connect_type(enum connman_service_type type)
{
@@ -1904,8 +1922,9 @@ __connman_service_connect_type(enum connman_service_type
type)
err = __connman_service_connect(service);
if (err < 0) {
if (err == -ENOKEY)
- if (__connman_agent_request_passphrase(service,
- NULL, NULL))
+ if ( __connman_agent_request_input(service,
+ request_input_cb,
+ NULL))
return service;
if (err != -EINPROGRESS)
@@ -1950,8 +1969,9 @@ static DBusMessage *connect_service(DBusConnection *conn,
err = __connman_service_connect(service);
if (err < 0) {
if (err == -ENOKEY) {
- if (__connman_agent_request_passphrase(service,
- NULL, NULL) == 0)
+ if (__connman_agent_request_input(service,
+ request_input_cb,
+ NULL) == 0)
return NULL;
}
--
1.7.1
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman