On Tue, 2015-06-23 at 16:01 +0530, Harish Jenny K N wrote:
> 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);

The above hash table manipulations are handled in
add_or_replace_bss_to_network() by replacing the old value with new_bss.

Cheers,

        Patrik

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

Reply via email to