summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJukka Rissanen <jukka.rissanen@linux.intel.com>2011-08-24 11:36:41 +0300
committerSamuel Ortiz <sameo@linux.intel.com>2011-08-24 11:46:32 +0200
commit8cd840fda9193cee70683f14c7bbcba3d8e11dfb (patch)
tree711819890abac8d3a8b0a673097154e116dd6cb8
parentab16660c0aebd651a10daefd85fca82a0b4dfbb0 (diff)
downloadconnman-8cd840fda9193cee70683f14c7bbcba3d8e11dfb.tar.gz
connman-8cd840fda9193cee70683f14c7bbcba3d8e11dfb.tar.bz2
connman-8cd840fda9193cee70683f14c7bbcba3d8e11dfb.zip
service: Prefer online state over ready when comparing services
-rw-r--r--src/service.c16
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)