From: Daniel Wagner <[email protected]>
Update service_list when AllowedBearers is changed.
---
src/session.c | 36 ++++++++++++++++++++++--------------
1 files changed, 22 insertions(+), 14 deletions(-)
diff --git a/src/session.c b/src/session.c
index c6c2187..d4ed430 100644
--- a/src/session.c
+++ b/src/session.c
@@ -584,15 +584,6 @@ static gint sort_services(gconstpointer a, gconstpointer
b, gpointer user_data)
return sort_allowed_bearers(service_a, service_b, session);
}
-static void print_name(gpointer data, gpointer user_data)
-{
- struct connman_service *service = data;
-
- DBG("service %p type %s name %s", service,
- service2bearer(connman_service_get_type(service)),
- __connman_service_get_name(service));
-}
-
static void cleanup_session(gpointer user_data)
{
struct connman_session *session = user_data;
@@ -799,6 +790,26 @@ static DBusMessage *disconnect_session(DBusConnection
*conn,
return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
}
+static void print_name(gpointer data, gpointer user_data)
+{
+ struct connman_service *service = data;
+
+ DBG("service %p type %s name %s", service,
+ service2bearer(connman_service_get_type(service)),
+ __connman_service_get_name(service));
+}
+
+static void update_allowed_bearers(struct connman_session *session)
+{
+ if (session->service_list != NULL)
+ g_sequence_free(session->service_list);
+
+ session->service_list = __connman_service_get_list(session,
+ service_match);
+ g_sequence_sort(session->service_list, sort_services, session);
+ g_sequence_foreach(session->service_list, print_name, NULL);
+}
+
static DBusMessage *change_session(DBusConnection *conn,
DBusMessage *msg, void *user_data)
{
@@ -848,7 +859,7 @@ static DBusMessage *change_session(DBusConnection *conn,
info->allowed_bearers = allowed_bearers;
- /* update_allowed_bearers(); */
+ update_allowed_bearers(session);
} else {
goto err;
}
@@ -1083,10 +1094,7 @@ int __connman_session_create(DBusMessage *msg)
info_last->service = (void *) 1;
info_last->marker = info->marker + 1;
- session->service_list = __connman_service_get_list(session,
- service_match);
- g_sequence_sort(session->service_list, sort_services, session);
- g_sequence_foreach(session->service_list, print_name, NULL);
+ update_allowed_bearers(session);
g_hash_table_replace(session_hash, session->session_path, session);
--
1.7.4.2
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman