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 connman@connman.net https://lists.connman.net/mailman/listinfo/connman