diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2011-08-24 11:36:41 +0300 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-08-24 11:46:32 +0200 |
commit | 8cd840fda9193cee70683f14c7bbcba3d8e11dfb (patch) | |
tree | 711819890abac8d3a8b0a673097154e116dd6cb8 | |
parent | ab16660c0aebd651a10daefd85fca82a0b4dfbb0 (diff) | |
download | connman-8cd840fda9193cee70683f14c7bbcba3d8e11dfb.tar.gz connman-8cd840fda9193cee70683f14c7bbcba3d8e11dfb.tar.bz2 connman-8cd840fda9193cee70683f14c7bbcba3d8e11dfb.zip |
service: Prefer online state over ready when comparing services
-rw-r--r-- | src/service.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/service.c b/src/service.c index 0380dbe0..4ab37503 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) |