Don't wait for a reply from supplicant for D-Bus calls which don't
have a callback function for processing the reply.
---
gsupplicant/dbus.c | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/gsupplicant/dbus.c b/gsupplicant/dbus.c
index 2957979..d241fe9 100644
--- a/gsupplicant/dbus.c
+++ b/gsupplicant/dbus.c
@@ -497,16 +497,10 @@ int supplicant_dbus_method_call(const char *path,
if (!path || !interface || !method)
return -EINVAL;
- method_call = g_try_new0(struct method_call_data, 1);
- if (!method_call)
- return -ENOMEM;
-
message = dbus_message_new_method_call(SUPPLICANT_SERVICE, path,
interface, method);
- if (!message) {
- g_free(method_call);
+ if (!message)
return -ENOMEM;
- }
dbus_message_set_auto_start(message, FALSE);
@@ -514,6 +508,21 @@ int supplicant_dbus_method_call(const char *path,
if (setup)
setup(&iter, user_data);
+ /* No need to wait for reply if there's no reply function */
+ if (!function) {
+ int r = dbus_connection_send(connection, message, NULL)
+ ? 0
+ : -EIO;
+ dbus_message_unref(message);
+ return r;
+ }
+
+ method_call = g_try_new0(struct method_call_data, 1);
+ if (!method_call) {
+ dbus_message_unref(message);
+ return -ENOMEM;
+ }
+
if (!dbus_connection_send_with_reply(connection, message,
&call, TIMEOUT)) {
dbus_message_unref(message);
--
1.9.1
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman