From: Daniel Wagner <[email protected]>

service_state_changed() should only update the service
states. session_changed() takes care of all session settings.
---
 src/session.c |   19 +++++++------------
 1 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/src/session.c b/src/session.c
index 0930569..56682cf 100644
--- a/src/session.c
+++ b/src/session.c
@@ -906,6 +906,12 @@ static void session_changed(struct connman_session 
*session,
        DBG("session %p trigger %s reason %s", session, trigger2string(trigger),
                                                reason2string(info->reason));
 
+       if (info->entry != NULL) {
+               info->online = is_online(info->entry->state);
+               if (info_last->online != info->online)
+                       session->info_dirty = TRUE;
+       }
+
        switch (trigger) {
        case CONNMAN_SESSION_TRIGGER_UNKNOWN:
                DBG("ignore session changed event");
@@ -1674,32 +1680,21 @@ static void service_state_changed(struct 
connman_service *service,
 {
        GHashTableIter iter;
        gpointer key, value;
-       struct connman_session *session;
-       struct session_info *info, *info_last;
 
        DBG("service %p state %d", service, state);
 
        g_hash_table_iter_init(&iter, session_hash);
 
        while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
+               struct connman_session *session = value;
                GSequenceIter *service_iter;
 
-               session = value;
-               info = session->info;
-               info_last = session->info_last;
-
                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