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