Re: [PATCH 4/9] supplicant: Don't wait for interface removal reply if not needed

2015-01-10 Thread Hannu Mallat

On 08.01.2015 11:26, Hannu Mallat wrote:

Don't wait for a reply from supplicant for interface removal if
there's not callback function for processing the reply.


There is a problem with this patch as it omits the object path parameter 
to the method call if there's no callback function. Will send v2 of the 
patch which operates correctly and is actually shorter.


BR,
H.

___
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman


[PATCH 4/9] supplicant: Don't wait for interface removal reply if not needed

2015-01-08 Thread Hannu Mallat
Don't wait for a reply from supplicant for interface removal if
there's not callback function for processing the reply.
---
 gsupplicant/supplicant.c | 28 +---
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index 909a617..d5779e0 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -3693,7 +3693,8 @@ static void interface_remove_params(DBusMessageIter 
*iter, void *user_data)
 {
struct interface_data *data = user_data;
 
-   dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH,
+   if (data)
+   dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH,
data-interface-path);
 }
 
@@ -3702,7 +3703,7 @@ int g_supplicant_interface_remove(GSupplicantInterface 
*interface,
GSupplicantInterfaceCallback callback,
void *user_data)
 {
-   struct interface_data *data;
+   struct interface_data *data = NULL;
int ret;
 
if (!interface)
@@ -3713,22 +3714,27 @@ int g_supplicant_interface_remove(GSupplicantInterface 
*interface,
 
g_supplicant_interface_cancel(interface);
 
-   data = dbus_malloc0(sizeof(*data));
-   if (!data)
-   return -ENOMEM;
+   if (callback) {
+   data = dbus_malloc0(sizeof(*data));
+   if (!data)
+   return -ENOMEM;
 
-   data-interface = interface;
-   data-path = g_strdup(interface-path);
-   data-callback = callback;
-   data-user_data = user_data;
+   data-interface = interface;
+   data-path = g_strdup(interface-path);
+   data-callback = callback;
+   data-user_data = user_data;
+   }
 
ret = supplicant_dbus_method_call(SUPPLICANT_PATH,
SUPPLICANT_INTERFACE,
RemoveInterface,
interface_remove_params,
-   interface_remove_result, data,
+   data
+   ? interface_remove_result
+   : NULL,
+   data,
NULL);
-   if (ret  0) {
+   if (ret  0  data) {
g_free(data-path);
dbus_free(data);
}
-- 
1.9.1

___
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman