From: Daniel Wagner <[email protected]>

When a Session is destroyed, we have to check if we have
to disconnect the Session first.
---
 src/session.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/src/session.c b/src/session.c
index 95b5407..d9da3c3 100644
--- a/src/session.c
+++ b/src/session.c
@@ -1205,6 +1205,8 @@ static void release_session(gpointer key, gpointer value, 
gpointer user_data)
 
 static int session_disconnect(struct connman_session *session)
 {
+       struct session_info *info = session->info;
+
        DBG("session %p, %s", session, session->owner);
 
        if (session->notify_watch > 0)
@@ -1213,6 +1215,11 @@ static int session_disconnect(struct connman_session 
*session)
        g_dbus_unregister_interface(connection, session->session_path,
                                                CONNMAN_SESSION_INTERFACE);
 
+       if (info->online == TRUE && info->entry != NULL &&
+                       explicit_connect(info->entry->reason) == TRUE) {
+               test_and_disconnect(session);
+       }
+
        g_hash_table_remove(session_hash, session->session_path);
 
        return 0;
-- 
1.7.6

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

Reply via email to