From ab0c25458460cb2bb5f1e5b2549a8b9e81a59660 Mon Sep 17 00:00:00 2001 From: Patrik Flykt Date: Wed, 17 Oct 2012 13:34:43 +0300 Subject: [PATCH] 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. --- src/service.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/service.c b/src/service.c index a027b3e..7381af3 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) { -- 2.7.4