summaryrefslogtreecommitdiff
path: root/src/session.c
diff options
context:
space:
mode:
authorDaniel Wagner <daniel.wagner@bmw-carit.de>2011-04-12 13:09:13 +0200
committerDaniel Wagner <daniel.wagner@bmw-carit.de>2011-04-12 15:27:43 +0200
commit16fec4d1a2ebd8204d672f713336051c26ca8a43 (patch)
treea3e61fcf437a5df78087a57e6163c47f29075535 /src/session.c
parent55efad67d64e1bf0f507916fc8eece76c4898dc8 (diff)
downloadconnman-16fec4d1a2ebd8204d672f713336051c26ca8a43.tar.gz
connman-16fec4d1a2ebd8204d672f713336051c26ca8a43.tar.bz2
connman-16fec4d1a2ebd8204d672f713336051c26ca8a43.zip
session: Handle AllowedBearers changes
Update service_list when AllowedBearers is changed.
Diffstat (limited to 'src/session.c')
-rw-r--r--src/session.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/src/session.c b/src/session.c
index c6c2187a..d4ed430f 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);