From: Daniel Wagner <[email protected]>

---
 src/session.c |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

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,
-- 
1.7.6

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to