From 0e77bf1c39a3566788b547115c0080dea3f28901 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Fri, 9 Aug 2019 12:30:56 -0500 Subject: [PATCH] network: Rely on known_networks removed event Instead of having known_networks call network_info_forget_known, instead rely on the newly introduced KNOWN_NETWORKS_EVENT_REMOVED --- src/knownnetworks.c | 5 ++++- src/network.c | 17 +++++------------ src/network.h | 1 - 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/knownnetworks.c b/src/knownnetworks.c index c6d4e089..1c3ffce2 100644 --- a/src/knownnetworks.c +++ b/src/knownnetworks.c @@ -456,7 +456,10 @@ static void known_network_removed(struct network_info *network) l_dbus_unregister_object(dbus_get_bus(), known_network_get_path(network)); - network_info_forget_known(network); + WATCHLIST_NOTIFY(&known_network_watches, + known_networks_watch_func_t, + KNOWN_NETWORKS_EVENT_REMOVED, network); + network_info_free(network); } diff --git a/src/network.c b/src/network.c index 51bf76b0..43c8334a 100644 --- a/src/network.c +++ b/src/network.c @@ -1339,10 +1339,9 @@ static void emit_known_network_changed(struct station *station, void *user_data) if (!network) return; - l_dbus_property_changed(dbus_get_bus(), - network_get_path(network), - IWD_NETWORK_INTERFACE, - "KnownNetwork"); + network->info = NULL; + l_dbus_property_changed(dbus_get_bus(), network_get_path(network), + IWD_NETWORK_INTERFACE, "KnownNetwork"); } struct network_info *network_info_add_known(const char *ssid, @@ -1370,14 +1369,6 @@ static void disconnect_no_longer_known(struct station *station, void *user_data) station_disconnect(station); } -void network_info_forget_known(struct network_info *network) -{ - memset(&network->connected_time, 0, sizeof(network->connected_time)); - - station_foreach(emit_known_network_changed, network); - station_foreach(disconnect_no_longer_known, network); -} - static void known_networks_changed(enum known_networks_event event, const struct network_info *info, void *user_data) @@ -1386,6 +1377,8 @@ static void known_networks_changed(enum known_networks_event event, case KNOWN_NETWORKS_EVENT_ADDED: break; case KNOWN_NETWORKS_EVENT_REMOVED: + station_foreach(emit_known_network_changed, (void *) info); + station_foreach(disconnect_no_longer_known, (void *) info); break; } } diff --git a/src/network.h b/src/network.h index be1ed974..9a8d2582 100644 --- a/src/network.h +++ b/src/network.h @@ -88,4 +88,3 @@ struct network_info { struct network_info *network_info_add_known(const char *ssid, enum security security); -void network_info_forget_known(struct network_info *network);