service: Properly disconnect network or provider on connect failure
authorPatrik Flykt <patrik.flykt@linux.intel.com>
Wed, 17 Aug 2011 09:47:05 +0000 (12:47 +0300)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 17 Aug 2011 10:05:23 +0000 (12:05 +0200)
Correctly check whether a service has a network or a VPN provider
associated with it if the service fails already in
__connman_service_connect().

src/service.c

index f5312b5..5fb11c0 100644 (file)
@@ -4017,7 +4017,11 @@ int __connman_service_connect(struct connman_service *service)
                                        CONNMAN_SERVICE_STATE_FAILURE,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
 
-       __connman_network_disconnect(service->network);
+       if (service->network != NULL)
+               __connman_network_disconnect(service->network);
+       else if (service->type == CONNMAN_SERVICE_TYPE_VPN &&
+                               service->provider != NULL)
+                       __connman_provider_disconnect(service->provider);
 
        if (service->userconnect == TRUE) {
                if (err == -ENOKEY) {