Handle the failure in add_or_replace_bss_to_network by
removing the entries from hash tables.

---
 gsupplicant/supplicant.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c
index 38cbad1..06e9954 100755
--- a/gsupplicant/supplicant.c
+++ b/gsupplicant/supplicant.c
@@ -2483,6 +2483,14 @@ static void signal_bss_changed(const char *path, 
DBusMessageIter *iter)
                memcpy(new_bss, bss, sizeof(struct g_supplicant_bss));
                new_bss->path = g_strdup(bss->path);
 
+               /* Remove entries in hash tables to handle the
+                * failure in add_or_replace_bss_to_network
+                */
+               g_hash_table_remove(bss_mapping, path);
+
+               g_hash_table_remove(interface->bss_mapping, path);
+               g_hash_table_remove(network->bss_table, path);
+
                g_hash_table_remove(interface->network_table, network->group);
 
                add_or_replace_bss_to_network(new_bss);
-- 
1.7.9.5

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to