diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/service.c | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/src/service.c b/src/service.c index 09cc4eb3..0002609f 100644 --- a/src/service.c +++ b/src/service.c @@ -2232,13 +2232,15 @@ static gboolean connect_timeout(gpointer user_data) if (service->network != NULL) __connman_network_disconnect(service->network); - if (service->ipconfig_ipv4) - if (__connman_ipconfig_disable(service->ipconfig_ipv4) == 0) - service->ipconfig_ipv4 = NULL; + if (__connman_ipconfig_disable(service->ipconfig_ipv4) == 0) { + connman_ipconfig_unref(service->ipconfig_ipv4); + service->ipconfig_ipv4 = NULL; + } - if (service->ipconfig_ipv6) - if (__connman_ipconfig_disable(service->ipconfig_ipv6) == 0) - service->ipconfig_ipv6 = NULL; + if (__connman_ipconfig_disable(service->ipconfig_ipv6) == 0) { + connman_ipconfig_unref(service->ipconfig_ipv6); + service->ipconfig_ipv6 = NULL; + } __connman_stats_service_unregister(service); @@ -3351,15 +3353,17 @@ int __connman_service_connect(struct connman_service *service) if (err < 0) { if (err != -EINPROGRESS) { - if (service->ipconfig_ipv4) - if (__connman_ipconfig_disable( - service->ipconfig_ipv4) == 0) - service->ipconfig_ipv4 = NULL; + if (__connman_ipconfig_disable( + service->ipconfig_ipv4) == 0) { + connman_ipconfig_unref(service->ipconfig_ipv4); + service->ipconfig_ipv4 = NULL; + } - if (service->ipconfig_ipv6) - if (__connman_ipconfig_disable( - service->ipconfig_ipv6) == 0) - service->ipconfig_ipv6 = NULL; + if (__connman_ipconfig_disable( + service->ipconfig_ipv6) == 0) { + connman_ipconfig_unref(service->ipconfig_ipv6); + service->ipconfig_ipv6 = NULL; + } __connman_stats_service_unregister(service); if (service->userconnect == TRUE) @@ -3406,11 +3410,15 @@ int __connman_service_disconnect(struct connman_service *service) __connman_ipconfig_clear_address(service->ipconfig_ipv4); __connman_ipconfig_clear_address(service->ipconfig_ipv6); - if (__connman_ipconfig_disable(service->ipconfig_ipv4) == 0) + if (__connman_ipconfig_disable(service->ipconfig_ipv4) == 0) { + connman_ipconfig_unref(service->ipconfig_ipv4); service->ipconfig_ipv4 = NULL; + } - if (__connman_ipconfig_disable(service->ipconfig_ipv6) == 0) + if (__connman_ipconfig_disable(service->ipconfig_ipv6) == 0) { + connman_ipconfig_unref(service->ipconfig_ipv6); service->ipconfig_ipv6 = NULL; + } __connman_stats_service_unregister(service); |