diff options
author | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2011-04-12 13:09:13 +0200 |
---|---|---|
committer | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2011-04-12 15:27:43 +0200 |
commit | 16fec4d1a2ebd8204d672f713336051c26ca8a43 (patch) | |
tree | a3e61fcf437a5df78087a57e6163c47f29075535 /src/session.c | |
parent | 55efad67d64e1bf0f507916fc8eece76c4898dc8 (diff) | |
download | connman-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.c | 36 |
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); |