When a connection fails and service->network is not NULL, we end up calling
__connman_service_put() twice, since __connman_device_cleanup_networks()
calls it too . __connman_device_cleanup_networks() eventually calls
network_remove() from the element removal code, and that ends up calling
__connman_service_put().
---
 src/service.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/service.c b/src/service.c
index 1d94a66..f5bb772 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2013,9 +2013,8 @@ failed:
                if (network != NULL) {
                        connman_network_set_available(network, FALSE);
                        __connman_device_cleanup_networks(device);
-               }
-
-               __connman_service_put(service);
+               } else
+                       __connman_service_put(service);
        }
 
        return err;
-- 
1.6.3.3

-- 
Intel Open Source Technology Centre
http://oss.intel.com/
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to