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