summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)