From: Patrik Flykt <[email protected]>

---
 src/agent.c |  113 +++++++++++++++++++++++++----------------------------------
 1 file changed, 47 insertions(+), 66 deletions(-)

diff --git a/src/agent.c b/src/agent.c
index 4113001..19c3882 100644
--- a/src/agent.c
+++ b/src/agent.c
@@ -573,8 +573,8 @@ int __connman_agent_request_passphrase_input(struct 
connman_service *service,
        const char *path;
        DBusMessageIter iter;
        DBusMessageIter dict;
-       DBusPendingCall *call;
        struct request_input_reply *passphrase_reply;
+       int err;
 
        if (service == NULL || agent_path == NULL || callback == NULL)
                return -ESRCH;
@@ -627,26 +627,22 @@ int __connman_agent_request_passphrase_input(struct 
connman_service *service,
                return -ENOMEM;
        }
 
-       if (dbus_connection_send_with_reply(connection, message, &call,
-                                       connman_timeout_input_request())
-                       == FALSE) {
-               dbus_message_unref(message);
-               g_free(passphrase_reply);
-               return -ESRCH;
-       }
-
-       if (call == NULL) {
-               dbus_message_unref(message);
-               g_free(passphrase_reply);
-               return -ESRCH;
-       }
-
        passphrase_reply->service = connman_service_ref(service);
        passphrase_reply->callback = callback;
        passphrase_reply->user_data = user_data;
 
-       dbus_pending_call_set_notify(call, request_input_passphrase_reply,
-                               passphrase_reply, NULL);
+       err = agent_queue_message(service, message,
+                       connman_timeout_input_request(),
+                       request_input_passphrase_reply,
+                       passphrase_reply);
+
+       if (err < 0 && err != -EBUSY) {
+               DBG("error %d sending agent message", err);
+               connman_service_unref(service);
+               dbus_message_unref(message);
+               g_free(passphrase_reply);
+               return err;
+       }
 
        dbus_message_unref(message);
 
@@ -660,8 +656,8 @@ int __connman_agent_request_login_input(struct 
connman_service *service,
        const char *path;
        DBusMessageIter iter;
        DBusMessageIter dict;
-       DBusPendingCall *call;
        struct request_input_reply *username_password_reply;
+       int err;
 
        if (service == NULL || agent_path == NULL || callback == NULL)
                return -ESRCH;
@@ -694,26 +690,20 @@ int __connman_agent_request_login_input(struct 
connman_service *service,
                return -ENOMEM;
        }
 
-       if (dbus_connection_send_with_reply(connection, message, &call,
-                                       connman_timeout_input_request())
-                       == FALSE) {
-               dbus_message_unref(message);
-               g_free(username_password_reply);
-               return -ESRCH;
-       }
-
-       if (call == NULL) {
-               dbus_message_unref(message);
-               g_free(username_password_reply);
-               return -ESRCH;
-       }
-
        username_password_reply->service = connman_service_ref(service);
        username_password_reply->callback = callback;
        username_password_reply->user_data = user_data;
 
-       dbus_pending_call_set_notify(call, request_input_login_reply,
-                                               username_password_reply, NULL);
+       err = agent_queue_message(service, message,
+                       connman_timeout_input_request(),
+                       request_input_login_reply, username_password_reply);
+       if (err < 0 && err != -EBUSY) {
+               DBG("error %d sending agent request", err);
+               connman_service_unref(service);
+               dbus_message_unref(message);
+               g_free(username_password_reply);
+               return err;
+       }
 
        dbus_message_unref(message);
 
@@ -753,10 +743,10 @@ int __connman_agent_request_browser(struct 
connman_service *service,
                                const char *url, void *user_data)
 {
        struct request_browser_reply_data *browser_reply_data;
-       DBusPendingCall *call;
        DBusMessage *message;
        DBusMessageIter iter;
        const char *path;
+       int err;
 
        if (service == NULL || agent_path == NULL || callback == NULL)
                return -ESRCH;
@@ -783,26 +773,21 @@ int __connman_agent_request_browser(struct 
connman_service *service,
                return -ENOMEM;
        }
 
-       if (dbus_connection_send_with_reply(connection, message, &call,
-                                       connman_timeout_browser_launch())
-                       == FALSE) {
-               dbus_message_unref(message);
-               g_free(browser_reply_data);
-               return -ESRCH;
-       }
-
-       if (call == NULL) {
-               dbus_message_unref(message);
-               g_free(browser_reply_data);
-               return -ESRCH;
-       }
-
        browser_reply_data->service = connman_service_ref(service);
        browser_reply_data->callback = callback;
        browser_reply_data->user_data = user_data;
 
-       dbus_pending_call_set_notify(call, request_browser_reply,
-                                               browser_reply_data, NULL);
+       err = agent_queue_message(service, message,
+                       connman_timeout_browser_launch(),
+                       request_browser_reply, browser_reply_data);
+
+       if (err < 0 && err != -EBUSY) {
+               DBG("error %d sending browser request", err);
+               connman_service_unref(service);
+               dbus_message_unref(message);
+               g_free(browser_reply_data);
+               return err;
+       }
 
        dbus_message_unref(message);
 
@@ -846,7 +831,7 @@ int __connman_agent_report_error(struct connman_service 
*service,
        DBusMessageIter iter;
        const char *path;
        struct report_error_data *report_error;
-       DBusPendingCall *call;
+       int err;
 
        if (service == NULL || agent_path == NULL || error == NULL ||
                callback == NULL)
@@ -872,25 +857,21 @@ int __connman_agent_report_error(struct connman_service 
*service,
                return -ENOMEM;
        }
 
-       if (dbus_connection_send_with_reply(connection, message, &call,
-                                       connman_timeout_input_request())
-                       == FALSE) {
-               dbus_message_unref(message);
-               g_free(report_error);
-               return -ESRCH;
-       }
+       report_error->service = connman_service_ref(service);
+       report_error->callback = callback;
+       report_error->user_data = user_data;
 
-       if (call == NULL) {
-               dbus_message_unref(message);
+       err = agent_queue_message(service, message,
+                       connman_timeout_input_request(),
+                       report_error_reply, report_error);
+       if (err < 0 && err != -EBUSY) {
+               DBG("error %d sending error request", err);
+               connman_service_unref(service);
                g_free(report_error);
+               dbus_message_unref(message);
                return -ESRCH;
        }
 
-       report_error->service = connman_service_ref(service);
-       report_error->callback = callback;
-       report_error->user_data = user_data;
-       dbus_pending_call_set_notify(call, report_error_reply,
-                               report_error, NULL);
        dbus_message_unref(message);
 
        return -EINPROGRESS;
-- 
1.7.10.4

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

Reply via email to