From: Daniel Wagner Date: Mon, 22 Aug 2011 11:16:03 +0000 (+0200) Subject: session: Update service state in all sessions X-Git-Tag: 0.77~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d46b1ac0550802040cf0857cc5d845ffcde6571a;p=platform%2Fupstream%2Fconnman.git session: Update service state in all sessions --- diff --git a/src/session.c b/src/session.c index 3086b2f..3d26546 100644 --- a/src/session.c +++ b/src/session.c @@ -1644,15 +1644,24 @@ static void service_state_changed(struct connman_service *service, g_hash_table_iter_init(&iter, session_hash); while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + GSequenceIter *service_iter; + session = value; info = session->info; info_last = session->info_last; - if (info->entry != NULL && info->entry->service == service) { - info->entry->state = state; - info->online = is_online(info->entry->state); - if (info_last->online != info->online) - session->info_dirty = TRUE; + service_iter = g_hash_table_lookup(session->service_hash, service); + if (service_iter != NULL) { + struct service_entry *entry; + + entry = g_sequence_get(service_iter); + entry->state = state; + + if (info->entry == entry) { + info->online = is_online(entry->state); + if (info_last->online != info->online) + session->info_dirty = TRUE; + } } session_changed(session,