diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2012-06-05 11:24:12 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-06-11 13:03:28 +0300 |
commit | 390b1719b848c07bcad9ab31365b5fad1ad3f21c (patch) | |
tree | 55bb953199a0245f2fcb4ee0d1faecd1d8f8d24f /src | |
parent | c329f0f22773df936ef31c539d8fd32c3a973659 (diff) | |
download | connman-390b1719b848c07bcad9ab31365b5fad1ad3f21c.tar.gz connman-390b1719b848c07bcad9ab31365b5fad1ad3f21c.tar.bz2 connman-390b1719b848c07bcad9ab31365b5fad1ad3f21c.zip |
service: Sort service sequence after checking provisioned services
Diffstat (limited to 'src')
-rw-r--r-- | src/config.c | 2 | ||||
-rw-r--r-- | src/service.c | 15 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/config.c b/src/config.c index aba06c4e..e04a88f0 100644 --- a/src/config.c +++ b/src/config.c @@ -828,6 +828,8 @@ static void provision_service(gpointer key, gpointer value, gpointer user_data) if (config->passphrase != NULL) __connman_service_set_string(service, "Passphrase", config->passphrase); + + __connman_service_mark_dirty(); } int __connman_config_provision_service(struct connman_service *service) diff --git a/src/service.c b/src/service.c index 5e1b51aa..c1182787 100644 --- a/src/service.c +++ b/src/service.c @@ -5506,6 +5506,21 @@ static void provision_changed(gpointer value, gpointer user_data) void __connman_service_provision_changed(const char *ident) { g_sequence_foreach(service_list, provision_changed, (void *)ident); + + /* + * Because the provision_changed() might have set some services + * as favorite, we must sort the sequence now. + */ + if (services_dirty == TRUE) { + services_dirty = FALSE; + + if (g_sequence_get_length(service_list) > 1) { + g_sequence_sort(service_list, service_compare, NULL); + service_schedule_changed(); + } + + __connman_connection_update_gateway(); + } } void __connman_service_set_config(struct connman_service *service, |