On Wed, 2015-07-08 at 17:05 +0300, Slava Monich wrote:
> Otherwise, service may get stuck in the ASSOCIATION state forever and
> update_from_network() won't do anything because is_connecting() keeps
> returning true, making recovery impossible.

This is not the place to handle a stuck association. Calling
__connman_service_remove_from_network() is always due to a group
removal, causes no change to connectivity status except that the gateway
is removed. It's the set_disconnected() earlier in src/network.c,
network_remove() that is supposed to do the job.

Cheers,

        Patrik

> ---
>  src/service.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/src/service.c b/src/service.c
> index 2d8245e..bd150aa 100644
> --- a/src/service.c
> +++ b/src/service.c
> @@ -6858,6 +6858,12 @@ void __connman_service_remove_from_network(struct 
> connman_network *network)
>       __connman_connection_gateway_remove(service,
>                                       CONNMAN_IPCONFIG_TYPE_ALL);
>  
> +     __connman_service_ipconfig_indicate_state(service,
> +                                             CONNMAN_SERVICE_STATE_IDLE,
> +                                             CONNMAN_IPCONFIG_TYPE_IPV4);
> +     __connman_service_ipconfig_indicate_state(service,
> +                                             CONNMAN_SERVICE_STATE_IDLE,
> +                                             CONNMAN_IPCONFIG_TYPE_IPV6);
>       connman_service_unref(service);
>  }
>  


_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to