service: Fix state combining
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Wed, 24 Aug 2011 14:02:01 +0000 (17:02 +0300)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 12 Sep 2011 09:40:46 +0000 (11:40 +0200)
If we have IPv6 state as DISCONNECT and IPv4 state as
ONLINE or READY then we are not disconnected.

src/service.c

index 62ad20a..de6541d 100644 (file)
@@ -743,75 +743,43 @@ static enum connman_service_state combine_state(
                goto done;
        }
 
-       if (state_a == CONNMAN_SERVICE_STATE_ASSOCIATION) {
-               if (state_b == CONNMAN_SERVICE_STATE_CONFIGURATION ||
-                               state_b == CONNMAN_SERVICE_STATE_ONLINE ||
-                               state_b == CONNMAN_SERVICE_STATE_READY)
-                       result = state_b;
-               else
-                       result = state_a;
+       if (state_a == CONNMAN_SERVICE_STATE_ONLINE) {
+               result = state_a;
                goto done;
        }
 
-       if (state_b == CONNMAN_SERVICE_STATE_ASSOCIATION) {
-               if (state_a == CONNMAN_SERVICE_STATE_CONFIGURATION ||
-                               state_a == CONNMAN_SERVICE_STATE_ONLINE ||
-                               state_a == CONNMAN_SERVICE_STATE_READY)
-                       result = state_a;
-               else
-                       result = state_b;
+       if (state_b == CONNMAN_SERVICE_STATE_ONLINE) {
+               result = state_b;
                goto done;
        }
 
-       if (state_a == CONNMAN_SERVICE_STATE_CONFIGURATION) {
-               if (state_b == CONNMAN_SERVICE_STATE_ONLINE ||
-                               state_b == CONNMAN_SERVICE_STATE_READY)
-                       result = state_b;
-               else
-                       result = state_a;
+       if (state_a == CONNMAN_SERVICE_STATE_READY) {
+               result = state_a;
                goto done;
        }
 
-       if (state_b == CONNMAN_SERVICE_STATE_CONFIGURATION) {
-               if (state_a == CONNMAN_SERVICE_STATE_ONLINE ||
-                               state_a == CONNMAN_SERVICE_STATE_READY)
-                       result = state_a;
-               else
-                       result = state_b;
+       if (state_b == CONNMAN_SERVICE_STATE_READY) {
+               result = state_b;
                goto done;
        }
 
-       if (state_a == CONNMAN_SERVICE_STATE_READY) {
-               if (state_b == CONNMAN_SERVICE_STATE_ONLINE ||
-                               state_b == CONNMAN_SERVICE_STATE_DISCONNECT)
-                       result = state_b;
-               else
-                       result = state_a;
+       if (state_a == CONNMAN_SERVICE_STATE_CONFIGURATION) {
+               result = state_a;
                goto done;
        }
 
-       if (state_b == CONNMAN_SERVICE_STATE_READY) {
-               if (state_a == CONNMAN_SERVICE_STATE_ONLINE ||
-                               state_a == CONNMAN_SERVICE_STATE_DISCONNECT)
-                       result = state_a;
-               else
-                       result = state_b;
+       if (state_b == CONNMAN_SERVICE_STATE_CONFIGURATION) {
+               result = state_b;
                goto done;
        }
 
-       if (state_a == CONNMAN_SERVICE_STATE_ONLINE) {
-               if (state_b == CONNMAN_SERVICE_STATE_DISCONNECT)
-                       result = state_b;
-               else
-                       result = state_a;
+       if (state_a == CONNMAN_SERVICE_STATE_ASSOCIATION) {
+               result = state_a;
                goto done;
        }
 
-       if (state_b == CONNMAN_SERVICE_STATE_ONLINE) {
-               if (state_a == CONNMAN_SERVICE_STATE_DISCONNECT)
-                       result = state_a;
-               else
-                       result = state_b;
+       if (state_b == CONNMAN_SERVICE_STATE_ASSOCIATION) {
+               result = state_b;
                goto done;
        }