summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/provider.c3
-rw-r--r--src/service.c5
2 files changed, 5 insertions, 3 deletions
diff --git a/src/provider.c b/src/provider.c
index 8783a30..47aaa76 100644
--- a/src/provider.c
+++ b/src/provider.c
@@ -330,7 +330,7 @@ static void unregister_provider(gpointer data)
DBG("provider %p", provider);
- __connman_provider_disconnect(provider);
+ __connman_service_put(provider->vpn_service);
connman_element_unregister(&provider->element);
connman_provider_unref(provider);
@@ -347,7 +347,6 @@ static void provider_destruct(struct connman_element *element)
g_free(provider->domain);
g_free(provider->identifier);
g_free(provider->dns);
- __connman_service_put(provider->vpn_service);
}
static void __connman_provider_initialize(struct connman_provider *provider)
diff --git a/src/service.c b/src/service.c
index 5914b40..cc77dd7 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2011,6 +2011,9 @@ static void service_free(gpointer user_data)
if (service->network != NULL)
connman_network_unref(service->network);
+ if (service->provider != NULL)
+ connman_provider_unref(service->provider);
+
if (service->ipconfig != NULL) {
connman_ipconfig_unref(service->ipconfig);
service->ipconfig = NULL;
@@ -3469,7 +3472,7 @@ __connman_service_create_from_provider(struct connman_provider *provider)
return NULL;
service->type = CONNMAN_SERVICE_TYPE_VPN;
- service->provider = provider;
+ service->provider = connman_provider_ref(provider);
service->autoconnect = FALSE;
service->state = CONNMAN_SERVICE_STATE_IDLE;