diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-07-17 12:08:34 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-07-17 12:08:34 +0200 |
commit | a65f4cc4c089af1929e98627c004506246084004 (patch) | |
tree | 77513664b7376649d8326f1ad56430b44b9cdc88 | |
parent | 35c308f1ffb5424deb7e90508f95971ea69f39ca (diff) | |
download | connman-a65f4cc4c089af1929e98627c004506246084004.tar.gz connman-a65f4cc4c089af1929e98627c004506246084004.tar.bz2 connman-a65f4cc4c089af1929e98627c004506246084004.zip |
Fix the reference counting for revived services
-rw-r--r-- | src/service.c | 10 |
1 files 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); } |