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