From 8cd840fda9193cee70683f14c7bbcba3d8e11dfb Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Wed, 24 Aug 2011 11:36:41 +0300 Subject: [PATCH] service: Prefer online state over ready when comparing services --- src/service.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/service.c b/src/service.c index 0380dbe..4ab3750 100644 --- a/src/service.c +++ b/src/service.c @@ -3297,9 +3297,21 @@ static gint service_compare(gconstpointer a, gconstpointer b, state_b = service_b->state; if (state_a != state_b) { - if (is_connected(service_a) == TRUE) + gboolean a_connected = is_connected(service_a); + gboolean b_connected = is_connected(service_b); + + if (a_connected == TRUE && b_connected == TRUE) { + /* We prefer online over ready state */ + if (state_a == CONNMAN_SERVICE_STATE_ONLINE) + return -1; + + if (state_b == CONNMAN_SERVICE_STATE_ONLINE) + return 1; + } + + if (a_connected == TRUE) return -1; - if (is_connected(service_b) == TRUE) + if (b_connected == TRUE) return 1; if (is_connecting(service_a) == TRUE) -- 2.7.4