From: Daniel Wagner <[email protected]>
All session stay in free ride mode all the time. We
still have to know if we have call connect on a service. Therefore
we need to distiguish between reason CONNECT and FREE_RIDE.
---
src/session.c | 23 ++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)
diff --git a/src/session.c b/src/session.c
index 72a2b2f..9ac89af 100644
--- a/src/session.c
+++ b/src/session.c
@@ -50,8 +50,7 @@ enum connman_session_trigger {
enum connman_session_reason {
CONNMAN_SESSION_REASON_UNKNOWN = 0,
CONNMAN_SESSION_REASON_CONNECT = 1,
- CONNMAN_SESSION_REASON_DISCONNECT = 2,
- CONNMAN_SESSION_REASON_FREE_RIDE = 3,
+ CONNMAN_SESSION_REASON_FREE_RIDE = 2,
};
enum connman_session_state {
@@ -147,8 +146,6 @@ static const char *reason2string(enum
connman_session_reason reason)
return "unknown";
case CONNMAN_SESSION_REASON_CONNECT:
return "connect";
- case CONNMAN_SESSION_REASON_DISCONNECT:
- return "disconnect";
case CONNMAN_SESSION_REASON_FREE_RIDE:
return "free-ride";
}
@@ -820,7 +817,6 @@ static connman_bool_t explicit_connect(enum
connman_session_reason reason)
switch (reason) {
case CONNMAN_SESSION_REASON_UNKNOWN:
case CONNMAN_SESSION_REASON_FREE_RIDE:
- case CONNMAN_SESSION_REASON_DISCONNECT:
break;
case CONNMAN_SESSION_REASON_CONNECT:
return TRUE;
@@ -970,14 +966,13 @@ static void deselect_service(struct session_info *info)
pending_timeout_add(0, call_disconnect, entry);
}
-static void deselect_and_disconnect(struct connman_session *session,
- enum connman_session_reason reason)
+static void deselect_and_disconnect(struct connman_session *session)
{
struct session_info *info = session->info;
deselect_service(info);
- info->reason = reason;
+ info->reason = CONNMAN_SESSION_REASON_FREE_RIDE;
}
static void select_connected_service(struct session_info *info,
@@ -1184,7 +1179,7 @@ static void session_changed(struct connman_session
*session,
* The currently selected service is
* not part of this session anymore.
*/
- deselect_and_disconnect(session, info->reason);
+ deselect_and_disconnect(session);
}
g_hash_table_remove_all(service_hash_last);
@@ -1195,7 +1190,7 @@ static void session_changed(struct connman_session
*session,
if (info->state >= CONNMAN_SESSION_STATE_CONNECTED &&
is_type_matching_state(&info->state,
info->type) == FALSE)
- deselect_and_disconnect(session, info->reason);
+ deselect_and_disconnect(session);
}
if (info->state == CONNMAN_SESSION_STATE_DISCONNECTED) {
@@ -1228,8 +1223,7 @@ static void session_changed(struct connman_session
*session,
break;
case CONNMAN_SESSION_TRIGGER_DISCONNECT:
- deselect_and_disconnect(session,
- CONNMAN_SESSION_REASON_DISCONNECT);
+ deselect_and_disconnect(session);
break;
case CONNMAN_SESSION_TRIGGER_SERVICE:
@@ -1239,7 +1233,7 @@ static void session_changed(struct connman_session
*session,
break;
}
- deselect_and_disconnect(session, info->reason);
+ deselect_and_disconnect(session);
if (info->reason == CONNMAN_SESSION_REASON_FREE_RIDE) {
select_and_connect(session, info->reason);
@@ -1391,8 +1385,7 @@ static int session_disconnect(struct connman_session
*session)
g_dbus_unregister_interface(connection, session->session_path,
CONNMAN_SESSION_INTERFACE);
- deselect_and_disconnect(session,
- CONNMAN_SESSION_REASON_DISCONNECT);
+ deselect_and_disconnect(session);
g_hash_table_remove(session_hash, session->session_path);
--
1.7.12.rc1.16.g05a20c8
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman