service: Compare combined states in service_compare()
authorSamuel Ortiz <sameo@linux.intel.com>
Tue, 15 Feb 2011 16:15:03 +0000 (17:15 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 15 Feb 2011 17:05:34 +0000 (18:05 +0100)
src/service.c

index 5bbc76c..013b77e 100644 (file)
@@ -3115,10 +3115,12 @@ static gint service_compare(gconstpointer a, gconstpointer b,
 {
        struct connman_service *service_a = (void *) a;
        struct connman_service *service_b = (void *) b;
+       enum connman_service_state state_a, state_b;
 
-       if (service_a->state_ipv4 != service_b->state_ipv4 &&
-                       service_a->state_ipv6 != service_b->state_ipv6) {
+       state_a = combine_state(service_a->state_ipv4, service_a->state_ipv6);
+       state_b = combine_state(service_b->state_ipv4, service_b->state_ipv6);
 
+       if (state_a != state_b) {
                if (is_connected(service_a) == TRUE)
                        return -1;
                if (is_connected(service_b) == TRUE)