If vpn service cannot be started for some reason, we must
remove the provider so that user can reconnect to it later.
---
 src/provider.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/provider.c b/src/provider.c
index d6d1b7e..9f7050f 100644
--- a/src/provider.c
+++ b/src/provider.c
@@ -359,6 +359,8 @@ int connman_provider_indicate_error(struct connman_provider 
*provider,
                                        enum connman_provider_error error)
 {
        enum connman_service_error service_error;
+       const char *path;
+       int ret;
 
        switch (error) {
        case CONNMAN_PROVIDER_ERROR_LOGIN_FAILED:
@@ -375,8 +377,12 @@ int connman_provider_indicate_error(struct 
connman_provider *provider,
                break;
        }
 
-       return __connman_service_indicate_error(provider->vpn_service,
+       ret = __connman_service_indicate_error(provider->vpn_service,
                                                        service_error);
+       path = __connman_service_get_path(provider->vpn_service);
+       __connman_provider_remove(path);
+
+       return ret;
 }
 
 static void unregister_provider(gpointer data)
-- 
1.7.1

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to