Hi, On Tue, 2015-03-24 at 16:03 +0200, Slava Monich wrote: > 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); > + } > +
Why do we care about how wpa_supplicant internally handles its networks at this point, especially for the wpa_cli tool? AFAIK wpa_supplicant will clear out networks after ~2 mins if they haven't been seen in a later scan. What is the logic to remove something that apparently isn't matching the provided user data? How is this even possible? > g_free(interface->network_path); > interface->network_path = g_strdup(path); > Cheers, Patrik _______________________________________________ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman