service: Do not always reset the IPv4 state on error clearing
authorSamuel Ortiz <sameo@linux.intel.com>
Thu, 24 Feb 2011 15:09:50 +0000 (16:09 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 24 Feb 2011 15:09:50 +0000 (16:09 +0100)
When clearing the service error from the oFono plugin, moving the IPv6
state to IDLE can trigger an automatic connection and thus move the IPv4
to the ASSOCIATING state.

src/service.c

index 91b7739..a103549 100644 (file)
@@ -3604,6 +3604,14 @@ int __connman_service_clear_error(struct connman_service *service)
        __connman_service_indicate_state(service, CONNMAN_SERVICE_STATE_IDLE,
                                        CONNMAN_IPCONFIG_TYPE_IPV6);
 
+       /*
+        * Toggling the IPv6 state to IDLE could trigger the auto connect
+        * machinery and consequently the IPv4 state.
+        */
+       if (service->state_ipv4 != CONNMAN_SERVICE_STATE_UNKNOWN &&
+                       service->state_ipv4 != CONNMAN_SERVICE_STATE_FAILURE)
+               return 0;
+
        return __connman_service_indicate_state(service,
                                                CONNMAN_SERVICE_STATE_IDLE,
                                                CONNMAN_IPCONFIG_TYPE_IPV4);