diff options
author | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-10-17 13:34:43 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-10-18 13:27:16 +0300 |
commit | ab0c25458460cb2bb5f1e5b2549a8b9e81a59660 (patch) | |
tree | b813851e9faad98b9f5a2f2b08b487a89f2fe563 | |
parent | 288e8833a4c685a0a039770f08ed13bb64b20360 (diff) | |
download | connman-ab0c25458460cb2bb5f1e5b2549a8b9e81a59660.tar.gz connman-ab0c25458460cb2bb5f1e5b2549a8b9e81a59660.tar.bz2 connman-ab0c25458460cb2bb5f1e5b2549a8b9e81a59660.zip |
service: Prefer user connected services with SingleConnectedTechnology
Don't override user connected services with the ones selected by the
preferred technology list when SingleConnectedTechnology is enabled.
Do this by checking each connected service sorted in the beginning of
the service list for the userconnect flag.
-rw-r--r-- | src/service.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c index a027b3e8..7381af35 100644 --- a/src/service.c +++ b/src/service.c @@ -3377,6 +3377,26 @@ static GSequence* preferred_tech_list_get(GSequence *list) if (tech_array == NULL) return NULL; + if (connman_setting_get_bool("SingleConnectedTechnology") == TRUE) { + GSequenceIter *iter = g_sequence_get_begin_iter(service_list); + while (g_sequence_iter_is_end(iter) == FALSE) { + struct connman_service *service; + + service = g_sequence_get(iter); + + if (is_connected(service) == FALSE) + break; + + if (service->userconnect == TRUE) { + DBG("service %p name %s is user connected", + service, service->name); + return NULL; + } + + iter = g_sequence_iter_next(iter); + } + } + tech_data.preferred_list = g_sequence_new(NULL); for (i = 0; tech_array[i] != 0; i += 1) { |