Remove previously created network after creating a new one.
This prevents wpa_supplicant network objects (wpa_cli list_net)
from piling up.
---
 gsupplicant/supplicant.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index cd91f95..749eb20 100644
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -4024,6 +4024,11 @@ static void 
interface_select_network_params(DBusMessageIter *iter,
                                        &interface->network_path);
 }
 
+static void objpath_param(DBusMessageIter *iter, void *path)
+{
+       dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &path);
+}
+
 static void interface_add_network_result(const char *error,
                                DBusMessageIter *iter, void *user_data)
 {
@@ -4041,6 +4046,15 @@ static void interface_add_network_result(const char 
*error,
 
        SUPPLICANT_DBG("PATH: %s", path);
 
+       if (interface->network_path && strcmp(interface->network_path, path)) {
+               /* Prevent unused wpa_supplicant networks from piling up */
+               SUPPLICANT_DBG("Removing network %s", interface->network_path);
+               supplicant_dbus_method_call(interface->path,
+                       SUPPLICANT_INTERFACE ".Interface", "RemoveNetwork",
+                       objpath_param, NULL, interface->network_path,
+                       interface);
+       }
+
        g_free(interface->network_path);
        interface->network_path = g_strdup(path);
 
-- 
1.8.3.2

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

Reply via email to