if (__sync_fetch_and_sub(&provider->refcount, 1) != 1)
return;
- provider_remove(provider);
-
provider_destruct(provider);
}
if (g_strcmp0(srv_path, path) == 0) {
DBG("Removing VPN %s", provider->identifier);
- if (provider->driver != NULL &&
- provider->driver->remove)
- provider->driver->remove(provider);
+ provider_remove(provider);
g_hash_table_remove(provider_hash,
provider->identifier);
connman_provider_unref(provider);
}
-static void clean_provider(gpointer key, gpointer value, gpointer user_data)
-{
- struct connman_provider *provider = value;
-
- if (provider->driver != NULL && provider->driver->remove)
- provider->driver->remove(provider);
-}
-
static gint compare_priority(gconstpointer a, gconstpointer b)
{
return 0;
connman_notifier_unregister(&provider_notifier);
- g_hash_table_foreach(provider_hash, clean_provider, NULL);
-
g_hash_table_destroy(provider_hash);
provider_hash = NULL;