From a65f4cc4c089af1929e98627c004506246084004 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 17 Jul 2009 12:08:34 +0200 Subject: Fix the reference counting for revived services --- src/service.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/service.c b/src/service.c index d3891074..4d1ebaad 100644 --- a/src/service.c +++ b/src/service.c @@ -1589,9 +1589,13 @@ struct connman_service *__connman_service_create_from_network(struct connman_net service = __connman_service_lookup_from_network(network); if (service != NULL) { - if (service->timeout > 0 && service->pending == NULL) { - g_source_remove(service->timeout); - service->timeout = 0; + if (g_atomic_int_get(&service->refcount) == 0) { + if (service->timeout > 0) { + g_source_remove(service->timeout); + service->timeout = 0; + } + + connman_service_ref(service); set_idle(service); } -- cgit v1.2.3