From: Daniel Wagner <[email protected]>
The deselect_and_disconnect() function should be called
from session_changed() and not in the select_and_connect()
code path. All disconnect and connect decision are
initiate from session_changed(). This makes the code flow more
symetric.
Note that we break here a Online -> Offline transision, we are
going to fix this later again.
---
src/session.c | 11 +++--------
1 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/src/session.c b/src/session.c
index a06c014..224e666 100644
--- a/src/session.c
+++ b/src/session.c
@@ -778,7 +778,7 @@ static gboolean call_connect(gpointer user_data)
return FALSE;
}
-static void deselect_and_disconnect(struct connman_session *session)
+static void deselect_service(struct connman_session *session)
{
struct session_info *info = session->info;
struct connman_service *service;
@@ -803,13 +803,9 @@ static void deselect_and_disconnect(struct connman_session
*session)
g_timeout_add_seconds(0, call_disconnect, service);
}
-static void deselect_previous_service(struct connman_session *session,
- struct service_entry *entry)
+static void deselect_and_disconnect(struct connman_session *session)
{
- struct session_info *info = session->info;
-
- if (info->entry != NULL && info->entry != entry)
- deselect_and_disconnect(session);
+ deselect_service(session);
}
static void select_online_service(struct connman_session *session,
@@ -858,7 +854,6 @@ static void select_service(struct connman_session *session,
{
DBG("session %p service %p", session, entry->service);
- deselect_previous_service(session, entry);
if (is_online(entry->state) == TRUE)
select_online_service(session, entry);
--
1.7.6
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman