diff options
Diffstat (limited to 'src/network.c')
-rw-r--r-- | src/network.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/network.c b/src/network.c index 2090e7fe..e3e02d16 100644 --- a/src/network.c +++ b/src/network.c @@ -940,7 +940,7 @@ static void set_disconnected(struct connman_network *network) { struct connman_ipconfig *ipconfig_ipv4, *ipconfig_ipv6; enum connman_ipconfig_method ipv4_method, ipv6_method; - enum connman_service_state state; + enum connman_service_state state_ipv4, state_ipv6; struct connman_service *service; service = connman_service_lookup_from_network(network); @@ -1006,18 +1006,18 @@ static void set_disconnected(struct connman_network *network) * or in failure. It does not make sense to go to disconnect * state if we were not connected. */ - state = __connman_service_ipconfig_get_state(service, + state_ipv4 = __connman_service_ipconfig_get_state(service, CONNMAN_IPCONFIG_TYPE_IPV4); - if (state != CONNMAN_SERVICE_STATE_IDLE && - state != CONNMAN_SERVICE_STATE_FAILURE) + if (state_ipv4 != CONNMAN_SERVICE_STATE_IDLE && + state_ipv4 != CONNMAN_SERVICE_STATE_FAILURE) __connman_service_ipconfig_indicate_state(service, CONNMAN_SERVICE_STATE_DISCONNECT, CONNMAN_IPCONFIG_TYPE_IPV4); - state = __connman_service_ipconfig_get_state(service, + state_ipv6 = __connman_service_ipconfig_get_state(service, CONNMAN_IPCONFIG_TYPE_IPV6); - if (state != CONNMAN_SERVICE_STATE_IDLE && - state != CONNMAN_SERVICE_STATE_FAILURE) + if (state_ipv6 != CONNMAN_SERVICE_STATE_IDLE && + state_ipv6 != CONNMAN_SERVICE_STATE_FAILURE) __connman_service_ipconfig_indicate_state(service, CONNMAN_SERVICE_STATE_DISCONNECT, CONNMAN_IPCONFIG_TYPE_IPV6); @@ -1041,11 +1041,15 @@ static void set_disconnected(struct connman_network *network) } } - __connman_service_ipconfig_indicate_state(service, + if (state_ipv4 != CONNMAN_SERVICE_STATE_IDLE && + state_ipv4 != CONNMAN_SERVICE_STATE_FAILURE) + __connman_service_ipconfig_indicate_state(service, CONNMAN_SERVICE_STATE_IDLE, CONNMAN_IPCONFIG_TYPE_IPV4); - __connman_service_ipconfig_indicate_state(service, + if (state_ipv6 != CONNMAN_SERVICE_STATE_IDLE && + state_ipv6 != CONNMAN_SERVICE_STATE_FAILURE) + __connman_service_ipconfig_indicate_state(service, CONNMAN_SERVICE_STATE_IDLE, CONNMAN_IPCONFIG_TYPE_IPV6); |