From: Daniel Wagner <[email protected]>

Free-ride mode is implicit always enabled (see documentation)
we only need to track when a user requests a connection.
This can be expressed by a boolean. Remove the reason enum
and rename the connect and disconnect functions.
---
 src/session.c | 64 ++++++++++++++++++++---------------------------------------
 1 file changed, 21 insertions(+), 43 deletions(-)

diff --git a/src/session.c b/src/session.c
index e4a8b49..aca38ef 100644
--- a/src/session.c
+++ b/src/session.c
@@ -39,12 +39,6 @@ static GSList *policy_list;
 static uint32_t session_mark = 256;
 static struct firewall_context *global_firewall = NULL;
 
-enum connman_session_reason {
-       CONNMAN_SESSION_REASON_UNKNOWN          = 0,
-       CONNMAN_SESSION_REASON_CONNECT          = 1,
-       CONNMAN_SESSION_REASON_FREE_RIDE        = 2,
-};
-
 enum connman_session_state {
        CONNMAN_SESSION_STATE_DISCONNECTED   = 0,
        CONNMAN_SESSION_STATE_CONNECTED      = 1,
@@ -54,7 +48,7 @@ enum connman_session_state {
 struct session_info {
        struct connman_session_config config;
        enum connman_session_state state;
-       enum connman_session_reason reason;
+       bool connect;
 };
 
 struct connman_session {
@@ -83,20 +77,6 @@ struct connman_session {
        char *gateway;
 };
 
-static const char *reason2string(enum connman_session_reason reason)
-{
-       switch (reason) {
-       case CONNMAN_SESSION_REASON_UNKNOWN:
-               return "unknown";
-       case CONNMAN_SESSION_REASON_CONNECT:
-               return "connect";
-       case CONNMAN_SESSION_REASON_FREE_RIDE:
-               return "free-ride";
-       }
-
-       return NULL;
-}
-
 static const char *state2string(enum connman_session_state state)
 {
        switch (state) {
@@ -445,7 +425,7 @@ static void cleanup_session_final(struct connman_session 
*session)
 
        DBG("remove %s", session->session_path);
 
-       if (info->reason == CONNMAN_SESSION_REASON_CONNECT)
+       if (info->connect)
                __connman_service_set_active_session(false,
                                session->info->config.allowed_bearers);
 
@@ -952,34 +932,32 @@ static void ipconfig_ipv6_changed(struct connman_session 
*session)
                                                session->service);
 }
 
-static void deselect_and_disconnect(struct connman_session *session)
+static void trigger_disconnect(struct connman_session *session)
 {
        struct session_info *info = session->info;
 
-       if (info->reason == CONNMAN_SESSION_REASON_CONNECT)
-               __connman_service_set_active_session(false,
+       if (!info->connect)
+               return;
+
+       __connman_service_set_active_session(false,
                                info->config.allowed_bearers);
 
-       info->reason = CONNMAN_SESSION_REASON_FREE_RIDE;
+       info->connect = false;
        info->state = CONNMAN_SESSION_STATE_DISCONNECTED;
 }
 
-static void select_and_connect(struct connman_session *session,
-                               enum connman_session_reason reason)
+static void trigger_connect(struct connman_session *session)
 {
        struct session_info *info = session->info;
 
-       DBG("session %p reason %s", session, reason2string(reason));
+       if (info->connect)
+               return;
 
-       if (info->reason != reason &&
-                       reason == CONNMAN_SESSION_REASON_CONNECT) {
-               __connman_service_set_active_session(true,
+       info->connect = true;
+       __connman_service_set_active_session(true,
                                info->config.allowed_bearers);
 
-               __connman_service_auto_connect();
-       }
-
-       info->reason = reason;
+       __connman_service_auto_connect();
 }
 
 int connman_session_config_update(struct connman_session *session)
@@ -1013,14 +991,14 @@ int connman_session_config_update(struct connman_session 
*session)
        if (err < 0)
                return err;
 
-       if (info->reason == CONNMAN_SESSION_REASON_CONNECT)
+       if (info->connect)
                __connman_service_set_active_session(false,
                                info->config.allowed_bearers);
 
        g_slist_free(info->config.allowed_bearers);
        info->config.allowed_bearers = allowed_bearers;
 
-       if (info->reason == CONNMAN_SESSION_REASON_CONNECT)
+       if (info->connect)
                __connman_service_set_active_session(true,
                                info->config.allowed_bearers);
 
@@ -1055,7 +1033,7 @@ static DBusMessage *connect_session(DBusConnection *conn,
                session->ecall = true;
        }
 
-       select_and_connect(session, CONNMAN_SESSION_REASON_CONNECT);
+       trigger_connect(session);
 
        return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
 }
@@ -1074,7 +1052,7 @@ static DBusMessage *disconnect_session(DBusConnection 
*conn,
                session->ecall = false;
        }
 
-       deselect_and_disconnect(session);
+       trigger_disconnect(session);
 
        return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
 }
@@ -1112,7 +1090,7 @@ static DBusMessage *change_session(DBusConnection *conn,
                        if (err < 0)
                                return __connman_error_failed(msg, -err);
 
-                       if (info->reason == CONNMAN_SESSION_REASON_CONNECT)
+                       if (info->connect)
                                __connman_service_set_active_session(false,
                                                info->config.allowed_bearers);
 
@@ -1127,7 +1105,7 @@ static DBusMessage *change_session(DBusConnection *conn,
                        if (err < 0)
                                return __connman_error_failed(msg, -err);
 
-                       if (info->reason == CONNMAN_SESSION_REASON_CONNECT)
+                       if (info->connect)
                                __connman_service_set_active_session(true,
                                                info->config.allowed_bearers);
 
@@ -1192,7 +1170,7 @@ static int session_disconnect(struct connman_session 
*session)
        g_dbus_unregister_interface(connection, session->session_path,
                                                CONNMAN_SESSION_INTERFACE);
 
-       deselect_and_disconnect(session);
+       trigger_disconnect(session);
 
        g_hash_table_remove(session_hash, session->session_path);
 
-- 
1.8.4.474.g128a96c

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

Reply via email to