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