From: Pasi Sjöholm <[email protected]>
It was possible with IPv6-only networks to have eternal
associating variable set as true, especially
when ipv4 configuration method was OFF.
---
src/network.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/network.c b/src/network.c
index db19cb9..8bfe121 100644
--- a/src/network.c
+++ b/src/network.c
@@ -342,6 +342,8 @@ static int manual_ipv6_set(struct connman_network *network,
connman_device_set_disconnected(network->device, false);
+ connman_network_set_associating(network, false);
+
network->connecting = false;
return 0;
@@ -386,8 +388,6 @@ static int dhcpv6_set_addresses(struct connman_network
*network)
if (!service)
goto err;
- connman_network_set_associating(network, false);
-
network->connecting = false;
ipconfig_ipv6 = __connman_service_get_ip6config(service);
@@ -511,6 +511,8 @@ static void check_dhcpv6(struct nd_router_advert *reply,
if (service) {
connman_service_create_ip6config(service, network->index);
+ connman_network_set_associating(network, false);
+
__connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_CONFIGURATION,
CONNMAN_IPCONFIG_TYPE_IPV6);
@@ -519,10 +521,14 @@ static void check_dhcpv6(struct nd_router_advert *reply,
/*
* We do stateful/stateless DHCPv6 if router advertisement says so.
*/
- if (reply->nd_ra_flags_reserved & ND_RA_FLAG_MANAGED)
+ if (reply->nd_ra_flags_reserved & ND_RA_FLAG_MANAGED) {
__connman_dhcpv6_start(network, prefixes, dhcpv6_callback);
- else if (reply->nd_ra_flags_reserved & ND_RA_FLAG_OTHER)
+ } else if (reply->nd_ra_flags_reserved & ND_RA_FLAG_OTHER) {
__connman_dhcpv6_start_info(network, dhcpv6_info_callback);
+ network->connecting = false;
+ } else {
+ network->connecting = false;
+ }
connman_network_unref(network);
}
@@ -602,8 +608,6 @@ static void autoconf_ipv6_set(struct connman_network
*network)
connman_device_set_disconnected(network->device, false);
- network->connecting = false;
-
service = connman_service_lookup_from_network(network);
if (!service)
return;
--
2.1.0
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman