From: Daniel Wagner <[email protected]>

A session is always in the free-ride mode, which means we set the
session active. The connect request is expressed via setting
session->info->connect = true and triggering the auto connect.
---
 src/session.c | 30 ++++++++++--------------------
 1 file changed, 10 insertions(+), 20 deletions(-)

diff --git a/src/session.c b/src/session.c
index 554bc85..27e9648 100644
--- a/src/session.c
+++ b/src/session.c
@@ -405,13 +405,10 @@ static void free_session(struct connman_session *session)
 
 static void cleanup_session_final(struct connman_session *session)
 {
-       struct session_info *info = session->info;
-
        DBG("remove %s", session->session_path);
 
-       if (info->connect)
-               __connman_service_set_active_session(session, false,
-                               session->info->config.allowed_bearers);
+       __connman_service_set_active_session(session, false,
+                                       session->info->config.allowed_bearers);
 
        g_slist_free(session->user_allowed_bearers);
 
@@ -946,11 +943,8 @@ static void trigger_disconnect(struct connman_session 
*session)
        if (!info->connect)
                return;
 
-       __connman_service_set_active_session(session, false,
-                               info->config.allowed_bearers);
-
+       __connman_service_auto_disconnect();
        info->connect = false;
-       info->state = CONNMAN_SESSION_STATE_DISCONNECTED;
 }
 
 static void trigger_connect(struct connman_session *session)
@@ -961,9 +955,6 @@ static void trigger_connect(struct connman_session *session)
                return;
 
        info->connect = true;
-       __connman_service_set_active_session(session, true,
-                               info->config.allowed_bearers);
-
        __connman_service_auto_connect();
 }
 
@@ -998,15 +989,13 @@ int connman_session_config_update(struct connman_session 
*session)
        if (err < 0)
                return err;
 
-       if (info->connect)
-               __connman_service_set_active_session(session, false,
+       __connman_service_set_active_session(session, false,
                                info->config.allowed_bearers);
 
        g_slist_free(info->config.allowed_bearers);
        info->config.allowed_bearers = allowed_bearers;
 
-       if (info->connect)
-               __connman_service_set_active_session(session, true,
+       __connman_service_set_active_session(session, true,
                                info->config.allowed_bearers);
 
        info->config.type = apply_policy_on_type(
@@ -1097,8 +1086,7 @@ static DBusMessage *change_session(DBusConnection *conn,
                        if (err < 0)
                                return __connman_error_failed(msg, -err);
 
-                       if (info->connect)
-                               __connman_service_set_active_session(session,
+                       __connman_service_set_active_session(session,
                                                false,
                                                info->config.allowed_bearers);
 
@@ -1113,8 +1101,7 @@ static DBusMessage *change_session(DBusConnection *conn,
                        if (err < 0)
                                return __connman_error_failed(msg, -err);
 
-                       if (info->connect)
-                               __connman_service_set_active_session(session,
+                       __connman_service_set_active_session(session,
                                                true,
                                                info->config.allowed_bearers);
 
@@ -1291,6 +1278,9 @@ static int session_create_final(struct creation_data 
*creation_data,
 
        session->append_all = true;
 
+       __connman_service_set_active_session(session, true,
+                                               info->config.allowed_bearers);
+
        session_notify(session);
 
        cleanup_creation_data(creation_data);
-- 
1.8.4.474.g128a96c

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

Reply via email to